2009-11-05 5 views
2

J'essaye d'écrire un script qui affichera n'importe quel répertoire qui n'a pas changé depuis plus de 90 jours. Je veux que le script seulement affiche le nom de chemin complet et lastwrittime. Le script que j'ai écrit seulement montre le nom de chemin mais pas le lastwriting. Voici le script.Powershell, en essayant de ne sortir que le chemin et lastwrittime sur les répertoires

Get-ChildItem | Where {$_.mode -match "d"} | Get-Acl | 
    Format-Table @{Label="Path";Expression={Convert-Path $_.Path}},lastwritetime 

Quand je lance ce script, je reçois la sortie suivante:

 
Path              lastwritetime 
----              ---------- 
C:\69a0b021087f270e1f5c 
C:\7ae3c67c5753d5a4599b1a 
C:\cf 
C:\compaq 
C:\CPQSYSTEM 
C:\Documents and Settings 
C:\downloads

J'ai découvert que la commande get-acl ne en tant que membre pas LastWriteTime. Alors, comment puis-je obtenir la sortie nécessaire seulement pour le chemin et lastwrittime?

Répondre

6

Vous n'avez pas besoin d'utiliser Get-Acl et pour perfuser $ _. PSIsContainer au lieu d'utiliser une correspondance regex sur la propriété Mode. Essayez ceci à la place:

Get-ChildItem -Recurse -Force | 
    ? {$_.PSIsContainer -and ($_.LastWriteTime -lt (get-date).AddDays(-90))} | 
    Format-Table FullName,LastWriteTime -auto 

Vous pouvez également utiliser -Force pour lister les répertoires cachés/système. Pour la sortie de ces données dans un fichier, vous avez plusieurs options:

Get-ChildItem -Recurse -Force | 
    ? {$_.PSIsContainer -and ($_.LastWriteTime -lt (get-date).AddDays(-90))} | 
    Select LastWriteTime,FullName | Export-Csv foo.txt 

Si vous n'êtes pas intéressé au format CSV, essayez ceci:

Get-ChildItem -Recurse -Force | 
    ? {$_.PSIsContainer -and ($_.LastWriteTime -lt (get-date).AddDays(-90))} | 
    Foreach { "{0,23} {1}" -f $_.LastWriteTime,$_.FullName} > foo.txt 

Essayez également d'utiliser Get-membres pour voir quelles propriétés sont sur fichiers & dirs par exemple:

Get-ChildItem $Home | Get-Member 

Et pour voir toutes les valeurs font:

Get-ChildItem $Home | Format-List * -force 
+0

Les modifications LastWriteTime apportées aux éléments enfants (fichiers & répertoires) n'affectent que LastWriteTime du répertoire qui contient ces éléments. –

+0

L'ajout du paramètre -Recurse à Get-ChildItem résout ce problème particulier. –

+0

Oui, j'ai pensé à l'option -recurse après avoir posté. Mais une question de plus et je serai hors de vos cheveux. Même la table de format a l'option automatique, lorsque vous placez les données dans un fichier, la colonne lastwritetime est supprimée. En outre, l'utilisation de l'option d'habillage rend la sortie un peu désordonnée. Je crois que la table de format prend automatiquement la largeur de colonne de l'écran et la met dans le fichier. Est-il possible de créer des largeurs de colonnes personnalisées à l'aide de la commande ft? –

Questions connexes