Каковы возможные значения 'Mode', возвращаемые командлетом PowerShell Get-ChildItem? - PullRequest
45 голосов
/ 09 февраля 2011

Когда я запускаю PowerShell Get-ChildItem в каталоге (или любом командлете, который возвращает элементы файловой системы), он показывает столбец с именем Mode, например:

    Directory: C:\MyDirectory


Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----          2/8/2011  10:55 AM            Directory1
d----          2/8/2011  10:54 AM            Directory2
d----          2/8/2011  10:54 AM            Directory3
-ar--          2/8/2011  10:54 AM        454 File1.txt
-ar--          2/8/2011  10:54 AM       4342 File2.txt

Я искал и искал в Google и в своей локальной книге PowerShell, но не смог найти никакой документации о значении столбца Mode.

Каковы возможные значения столбца Mode и чтокаждый из них значит?

Ответы [ 4 ]

51 голосов
/ 09 февраля 2011

Обратите внимание, что режим, который вы видите - это просто строковое представление битового поля enum, которое скрывается в свойстве Attributes.Вы можете выяснить, что означают отдельные буквы, просто показывая обе рядом:

PS> gci|select mode,attributes -u

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

В любом случае, полный список:

d - Directory
a - Archive
r - Read-only
h - Hidden
s - System
l - Reparse point, symlink, etc.
7 голосов
/ 09 февраля 2011

ИМХО, наиболее понятным является сам код:

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 + "-");
3 голосов
/ 13 октября 2016

Это все имена атрибутов файла и их значения можно найти здесь :

PS C:\> [enum]::GetNames("system.io.fileattributes")
ReadOnly
Hidden
System
Directory
Archive
Device
Normal
Temporary
SparseFile
ReparsePoint
Compressed
Offline
NotContentIndexed
Encrypted
0 голосов
/ 31 марта 2017

Вызов этих "атрибутов" является именем, специфичным для Windows, и нарушает традицию * nix называть этот "режим".Т.е. man chmod для "изменения режима".

Похоже, что дизайн Windows API сгибается (или соглашается) с более популярным термином в более широкой отрасли: "Режим" .

+ 1 от меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...