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 ;-)
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.
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?
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
Dukel 468 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)}
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.
Dukel 468 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.
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde dich hier an.
Jetzt anmelden