La longueur de Powershell n'apparaîtra pas dans la sortie de Get-ChildItem
J'essaye cette commande dans Windows 10 PowerShell:
Get-ChildItem -Recurse | select FullName,Length,LastAccessTime
Le résultat contient uniquement FullName
, while LastAccessTime
et Length
est absent de la sortie.
ScreenShot PowerShell
Qu'est-ce que je fais mal?
Réponses
Cela fonctionnera:
Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Export-Csv list.csv
Le problème est simplement un problème d' affichage :
Étant donné que les chemins parmi les objets de sortie sont longs et qu'il
FullName
s'agit de la première propriété sélectionnée, les propriétés restantes (colonnes) ne s'impriment pas , car elles ne peuvent pas tenir à l'écran. Cependant, les propriétés sont présentes et peuvent être utilisées par programme.Remarque: Si l'intention est d'enregistrer dans un fichier pour un traitement par programmation ultérieur , vous ne devez pas utiliser
>
/Out-File
, qui entraîne le même formatage d' affichage que celui que vous voyez dans la console (terminal), car ce formatage est uniquement destiné au observateur humain .- Pour le traitement par programmation , utilisez un format de données structuré tel que CSV , comme indiqué dans la réponse d'Ashok Prasath
Solutions de contournement :
Une solution de contournement rapide consiste à mettre la
FullName
propriété en dernier , comme le conseille Doug Maurer , ce qui fera apparaître toutes les propriétés (colonnes), bien que lesFullName
valeurs de propriété soient tronquées (symbolisées par…
), et notamment à partir du début des chemins:# FullName is placed *last* # Caveat: Paths will be truncated at the *end*. Get-ChildItem -Recurse | select Length, LastAccessTime, FullName
Si cela ne vous dérange pas de passer à un format basé sur une liste , où chaque valeur de propriété est représentée sur sa propre ligne précédée du nom de la propriété, dirigez vers Format-List; notez que les valeurs trop longues seront bouclées :
Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Format-List
Si vous voulez une sortie tabulaire et que cela ne vous dérange pas le retour à la ligne dans votre sortie , vous pouvez diriger Out-Stringavec une
-Width
valeur suffisamment grande pour s'adapter à toutes les colonnes (notez que cela Out-Fileprend également en charge-Width
):Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Out-String -Width 300
Si vous préférez le défilement horizontal au retour à la ligne, vous pouvez enregistrer ce qui précède dans un fichier et y ouvrir un éditeur de texte ou, avec un éditeur de texte tel que Visual Studio Code , vous pouvez directement diriger la sortie vers celui-ci:
# Opens the output directly in a new Visual Studio Code editor tab. Get-ChildItem -Recurse | select FullName,Length,LastAccessTime | Out-String -Width 300 | code -
Sinon - si vous voulez voir un affichage tabulaire dans la console , dans l' ordre exact des colonnes spécifié et sans retour à la ligne - votre seule option est de tronquer les
FullName
valeurs afin que toutes les colonnes puissent tenir; notez que, par souci de concision, j'omets l' appelselect
( Select-Object) en faveur de l'utilisation directe de Format-Table:Get-ChildItem -Recurse | Format-Table @{ e='FullName'; w=[Console]::WindowWidth-45; a='right'}, Length, LastAccessTime
Notez comment la largeur de la colonne (
w
entrée, abréviation dewidth
) est basée sur la fenêtre de la console avec ([Console]::WindowWidth
)45
caractères moins , pour afficher autant deFullName
valeurs que possible tout en laissant de la place pour les deux autres colonnes; aussi, pour s'assurer que la troncature (symbolisée par…
est appliquée au début du chemin - de sorte que le nom du fichier / répertoire soit toujours affiché - la colonne est alignée à droite (via l'a
entrée, abréviation dealignment
); si vous préférez la troncature de la fin du chemin, omettez l'a
entrée (qui prend alors la valeur par défautleft
).Pour plus d'informations sur cette manière basée sur la table de hachage (
@{ ... }
) de spécifier des propriétés dites calculées pourFormat-Table
, y compris une manière de tronquer depuis le début tout en maintenant l' alignement à gauche , consultez cette réponse .