Powershell FullName(s) in Variablen speichern

CharlieScene

Lt. Junior Grade
Registriert
Juli 2016
Beiträge
382
Moin!
Bin gerade dabei mir Powershell etwas näher zu bringen, habe sonst auch keinerlei Programmiererfahrung.
Ich glaube ich stehen gerade, mal wieder, mächtig auf dem Schlauch.

Erledigt werden soll folgendes:
Ich habe einen Ordner welcher mehrere Unterordner enthält.
Für alle Unterordner, welche String 'abcde' enthalten möchte ich mir den Dateipfad (UNC) in jeweils eine Variable schreiben damit ich damit im weiteren Verlauf des Skripts noch arbeiten kann.

-Ordner1
--Unterordner2
--Unterordner3
--Unterordner4

PowerShell:
$folder = "C:\Users\PS\Desktop\Programm\"
foreach ($dir in $folder)
{
([string[]](Get-ChildItem $folder | Select -expand FullName))
}

Gibt mir alle Pfade korrekt aus. Diese jetzt aber in Variablen zu schreiben ist mir noch nicht gelungen.

Vielleicht hat hier ja noch jemand einen entscheidenden Tipp für mich!
Vielen Dank!
Charlie
 
Zuletzt bearbeitet:
Speichere deine Treffer in einem Array ab:
https://docs.microsoft.com/de-de/powershell/scripting/learn/deep-dives/everything-about-arrays

Mit jedem Treffer einfach einen weiteren Eintrag im Array erzeugen.

Beispiel:

PowerShell:
$array = @()
Write-Host $array.Count // ergibt 0

$array += "test1"
$array += "test2"

Write-Host $array.Count // ergibt 2

Weitere Beispiele siehe Doku. :)

PS: Bitte nutze die CODE-Tags hier im Forum für Quellcode, damit dieser angenehmer lesbar ist.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: CharlieScene
Hat funktioniert, hätte ich drauf kommen können!
Danke dir!
 
Nur als Hinweis, man kann durchaus die (sicherlich seltsamen) idiosyncracies von Powershell nutzen. :daumen:

Etwa so:
PowerShell:
[string[]] $PathNames = (Get-ChildItem -Path $DirectoryRoot -Directoy -Filter '*abcde*' -Recurse).FullName

wobei
  • $DirectoryRoot der Stamm ist mit den Unterordnern,
  • -Directory sagt daß nur Verzeichnisse gewünscht sind,
  • -Recurse Unterordner einschließt (kann man auch mit -Depth einschränken oder weglassen für keine Unterordner)
  • -Filter eine Maske nach "Batchsyntax" ist (hier: alles was abcde irgendwo im Namen hat; ohne den * wird entsprechend am Anfang bzw am Ende begonnen zu suchen)
  • sowie das Ganze in Klammern und ein .Fullname hintendran liefert statt der DirectoryInfo Objekte nur jeweils deren FullName Eigenschaft.

PS ist sehr freigiebig - teilweise zu freigiebig -- aber das kann man sich zumindest zunutze machen. :daumen:
 

Ähnliche Themen

Zurück
Oben