2011-02-08 1 views
33

Quand je lance PowerShell de Get-ChildItem sur un répertoire (ou toute applet de commande qui renvoie les éléments du système de fichiers), il montre une colonne appelée Mode, comme ceci:Quelles sont les valeurs 'Mode' possibles renvoyées par l'applet de commande Get-ChildItem de PowerShell?

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 

J'ai cherché et cherché Google et mon livre de PowerShell local, mais Je n'ai trouvé aucune documentation sur la signification de la colonne Mode. Quelles sont les valeurs possibles de la colonne Mode et que signifient chacune d'elles?

Répondre

38

Notez que le mode voyez est juste une représentation de chaîne d'un bitfield enum qui se cache dans la propriété Attributes. Vous pouvez comprendre ce que les lettres individuelles signifient en montrant simplement les deux côte à côte:

PS> gci|select mode,attributes -u 

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

Dans tous les cas, la liste complète est:

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

PowerShell v5 a le sixième point 'l' pour le lien (' ReparsePoint'). – PetSerAl

+0

@PetSerAl: Oh, bien. Je les ai pris assez longtemps (la valeur de l'attribut était là avant, je pense que la chaîne avec les tirets a été construite juste pour l'affichage du fichier XML.) – Joey

+0

Get-ChildItem dans mon répertoire utilisateur a révélé beaucoup d'éléments que je ne peux pas voir dans Explorateur de fichiers malgré l'activation des "éléments cachés" Il semble que la différence entre eux et les éléments cachés que je peux voir comme AppData est qu'ils ont cet attribut du système Est-il possible de les voir dans l'explorateur de fichiers? –

6

à mon humble avis, le plus explicatif est le code lui-même:

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 + "-"); 
+4

Huh? Où avez-vous reçu le code? –

+1

@splattered: Réflecteur des assemblages PowerShell, je suppose. – Joey

+0

Oui, super, doux Réflecteur. – stej

2

Ce sont tous le fichier des noms d'attributs et là significations se trouvent here:

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

appeler ces "attributs" est un nom propre à Windows et rompt avec la tradition * nix d'appeler ce "mode". C'est à dire. man chmod pour "changer de mode".

Il semble que la conception de l'API Windows plie (ou acquiesce) vers le terme plus populaire dans l'industrie plus large: "Mode".

+1 de moi.

Questions connexes