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

Était-ce utile?

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

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top