bouncer86 5 Geschrieben 2. Mai 2014 Melden Geschrieben 2. Mai 2014 Hallo, habe hier gerade ein kleines Powershell Script und verzweifel. Gelöst habe ich es so: $users = get-aduser -Filter * ForEach($user in $users) { $dir = $user.SamAccountName New-Item -ItemType directory -Path E:\Users\$dir } Es geht um die Zeile New-Item. Und zwar möchte ich lieber mit $user.SamAccountName den Accountname an -Path übergeben. Aber leider wird $user an -Path übergeben. Wie komme ich nun in einer Zeile an den SamAccountName. Gelöst habe ich es ja mit der Zeile zuvor, aber das ist ja nicht im Sinne von Powershell ;-) Zitieren
mamamia 13 Geschrieben 2. Mai 2014 Melden Geschrieben 2. Mai 2014 Servus, probiers mal so: $users = get-aduser -Filter * | % { New-Item -ItemType directory -Path "E:\Users\$($_.SamAccountName)" } Ist ein bisschen zusammengestampft und die Objekteigenschaft wird direkt übergeben. Zitieren
bouncer86 5 Geschrieben 2. Mai 2014 Autor Melden Geschrieben 2. Mai 2014 ja... ich habe es auch mit $user.($_.SamAccountName) probiert. Das ging aber wieder nicht. Es muss ja auch irgendwie etwas auseinandergezogen gehen oder? Zitieren
mamamia 13 Geschrieben 2. Mai 2014 Melden Geschrieben 2. Mai 2014 Moment. Nicht $user.($_.SamAccountName) sondern "$($_.SamAccountName)" Hier mehr dazu: http://blogs.msdn.com/b/powershell/archive/2006/07/15/variable-expansion-in-strings-and-herestrings.aspx Zitieren
Dukel 460 Geschrieben 2. Mai 2014 Melden Geschrieben 2. Mai 2014 In Fall vom TO dann $($user.SamAccountName), wenn er das nicht mit % macht. Ich würde das folgendermaßen zusammenfassen: ForEach($user in (get-aduser -Filter *)) { New-Item -ItemType directory -Path E:\Users\$($user.SamAccountName)} Zitieren
bouncer86 5 Geschrieben 2. Mai 2014 Autor Melden Geschrieben 2. Mai 2014 Vielen Dank. Aber könnt ihr mir das kurz erklären warum das $ vor der Klammer noch stehen muss? So dass ich mir das auch merken kann ? Vielen Dank. Zitieren
Dukel 460 Geschrieben 2. Mai 2014 Melden Geschrieben 2. Mai 2014 Powershell arbeitet mit Objekten. $user ist das Objekt und hat viele Eigenschaften und Variablen. Als Parameter erkennt das Script nicht, dass du nicht das Objekt sondern eine Eigenschaft davon willst. Mit $() macht Powershell alles was in der Klammer ist als eine neue Variable. Teilweise funktioniert es nur mit der Klammer (siehe in meinem Beispiel im Foreach), das $ davor weißt zusätzlich noch an ein Skalar (ein einzelner Wert, hier einen String) daraus zu machen. Zitieren
bouncer86 5 Geschrieben 2. Mai 2014 Autor Melden Geschrieben 2. Mai 2014 Ok vielen Dank Dukel Zitieren
Empfohlene Beiträge
Schreibe einen Kommentar
Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.