PowerShell: Sous-répertoire liste à un fichier txt
-
08-10-2019 - |
Question
Aujourd'hui, j'ai commencé dans les scripts Windows PowerShell - donc s'il vous plaît excuser mon "mutisme" ...
Je veux créer txt-Files avec le nom des sous-dossiers de chaque « RootFolder » sur le lecteur G :. Le G: \ j'ai les dossiers suivants:
1_data
2_IT_area
3_personal
4_apprenticeship
7_backup
8_archives
9_user_profile
Alors j'ai écrit ce script:
get-childitem G:\ | ForEach-Object -process {gci $_.fullName -R} | WHERE {$_.PSIsContainer} > T:\listing\fileListing+$_.Name+.txt
Mais le script ne fait pas ce que je veux - il est la création d'un seul fichier texte .. u peut me aider? Je l'ai déjà essayé comme décrit ici >> http: //www.powershellpro .com / Powershell-tutorial-introduction / variables-réseaux-hash / "T:. \ liste \ $ _ nom.txt" - ne fonctionne pas aussi bien ...
Merci u beaucoup pour votre aide!
-Patrick
La solution
Cela devrait faire ce que vous voulez:
Get-ChildItem G:\ | Where {$_.PSIsContainer} |
Foreach {$filename = "T:\fileListing_$($_.Name).txt";
Get-ChildItem $_ -Recurse > $filename}
Et si en tapant cette manière interactive (en utilisant des alias):
gci G:\ | ?{$_.PSIsContainer} | %{$fn = "T:\fileListing_$($_.Name).txt";
gci $_ -r > $fn}
La variable spéciale $_
est généralement valable uniquement dans un { ... }
de scriptblock soit pour un Foreach-Object, Where-Object, ou tout autre scriptblock liées à la conduite. Ainsi, la construction de nom de fichier suivant T:\listing\fileListing+$_.Name+.txt
n'est pas tout à fait raison. Généralement, vous développez une variable dans une chaîne comme ceci:
$name = "John"
"His name is $name"
Toutefois, lorsque vous accédez à un membre d'un objet comme avec $_.Name
alors vous devez être en mesure d'exécuter une expression dans la chaîne. Vous pouvez le faire en utilisant l'opérateur de sous-expression $()
par exemple:.
"T:\listing\fileListing_$($_.Name).txt"
Tout ce que la construction de la chaîne de nom de fichier côté, vous ne pouvez pas utiliser $_
en dehors d'un scriptblock. Donc, vous déplacez simplement la construction de nom de fichier à l'intérieur du scriptblock Foreach. Ensuite, créez ce fichier avec le contenu du répertoire associé redirigé vers ce nom de fichier -. Qui va créer le fichier