bouncer86 5 Geschrieben 2. Mai 2014 Melden Teilen 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 Link zu diesem Kommentar
mamamia 13 Geschrieben 2. Mai 2014 Melden Teilen 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 Link zu diesem Kommentar
bouncer86 5 Geschrieben 2. Mai 2014 Autor Melden Teilen 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 Link zu diesem Kommentar
mamamia 13 Geschrieben 2. Mai 2014 Melden Teilen 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 Link zu diesem Kommentar
Dukel 454 Geschrieben 2. Mai 2014 Melden Teilen 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 Link zu diesem Kommentar
bouncer86 5 Geschrieben 2. Mai 2014 Autor Melden Teilen 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 Link zu diesem Kommentar
Dukel 454 Geschrieben 2. Mai 2014 Melden Teilen 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 Link zu diesem Kommentar
bouncer86 5 Geschrieben 2. Mai 2014 Autor Melden Teilen Geschrieben 2. Mai 2014 Ok vielen Dank Dukel Zitieren Link zu diesem Kommentar
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.