What are the possible 'Mode' values returned by PowerShell's Get-ChildItem cmdlet?

Note that the mode you see is just a string representation of a bitfield enum that hides in the Attributes property. You can figure out what the individual letters mean by simply showing both side by side:

PS> gci|select mode,attributes -u

Mode                Attributes
----                ----------
d-----               Directory
d-r---     ReadOnly, Directory
d----l Directory, ReparsePoint
-a----                 Archive

In any case, the full list is:

d - Directory
a - Archive
r - Read-only
h - Hidden
s - System
l - Reparse point, symlink, etc.

IMHO, the most explanatory is the code itself:

if (instance == null)
{
    return string.Empty;
}
FileSystemInfo baseObject = (FileSystemInfo) instance.BaseObject;
if (baseObject == null)
{
    return string.Empty;
}
string str = "";
if ((baseObject.Attributes & FileAttributes.Directory) == FileAttributes.Directory)
{
    str = str + "d";
}
else
{
    str = str + "-";
}
if ((baseObject.Attributes & FileAttributes.Archive) == FileAttributes.Archive)
{
    str = str + "a";
}
else
{
    str = str + "-";
}
if ((baseObject.Attributes & FileAttributes.ReadOnly) == FileAttributes.ReadOnly)
{
    str = str + "r";
}
else
{
    str = str + "-";
}
if ((baseObject.Attributes & FileAttributes.Hidden) == FileAttributes.Hidden)
{
    str = str + "h";
}
else
{
    str = str + "-";
}
if ((baseObject.Attributes & FileAttributes.System) == FileAttributes.System)
{
    return (str + "s");
}
return (str + "-");

These are all the file attribute names and there meanings can be found here:

PS C:\> [enum]::GetNames("system.io.fileattributes")
ReadOnly
Hidden
System
Directory
Archive
Device
Normal
Temporary
SparseFile
ReparsePoint
Compressed
Offline
NotContentIndexed
Encrypted

Tags:

Powershell