Hobbit6416 0 Geschrieben 17. November 2016 Melden Geschrieben 17. November 2016 Hallo @all habe ein Script erstellt um eine .csv auszulesen und neue User in der AD anzulegen Script liest die csv aus aber erstellt keine neuen User Läuft ohne fehlermeldung durch kann mir jemand helfen wo ich einen Fehler gemacht habe Danke Script: Import-Module activedirectoryImport-Csv -Delimiter ";" -Path "c:\test\mappe1.csv"foreach ($User in $ADUsers){$Username = $User.username$Firstname = $User.firstname$Lastname = $User.Lastname$OU = $User.OUif (Get-ADUser -F {SamAccountName -eq $Username}){ New-ADUser ` -SamAccountName $Username ` -UserPrincipalName "$Username@Configpoint.de" ` -Name "$Firstname $Lastname" ` -Givenname $Firstname ` -Surname $Lastname ` -Displayname "$Lastname, $Firstname" ` -Accountpassword $password ` -Path $OU ` } }
testperson 1.860 Geschrieben 17. November 2016 Melden Geschrieben 17. November 2016 Du solltest die CSV dann auch in $ADUsers importieren ;) https://msdn.microsoft.com/powershell/reference/5.1/microsoft.powershell.utility/Import-Csv
magheinz 111 Geschrieben 17. November 2016 Melden Geschrieben 17. November 2016 Und wenn der User existiert soll er angelegt werden?
Sunny61 833 Geschrieben 17. November 2016 Melden Geschrieben 17. November 2016 Da werf ich doch gleich den Artikel von Nils in die Diskussion: http://www.faq-o-matic.net/2008/01/19/excel-admins-unbekannter-liebling/ Ist zwar kein Powershell, aber zeigt die Einfachheit der möglichen Mittel. ;)
BOfH_666 586 Geschrieben 17. November 2016 Melden Geschrieben 17. November 2016 Wie testperson schon richtig meint - technisch betrachtet liegt der Fehler in der Zeile: Import-Csv -Delimiter ";" -Path "c:\test\mappe1.csv" die sollte so aussehen: $ADUsers = Import-Csv -Delimiter ";" -Path "c:\test\mappe1.csv" damit Dein Script wie gewünscht funktioniert.
Hobbit6416 0 Geschrieben 17. November 2016 Autor Melden Geschrieben 17. November 2016 Wie testperson schon richtig meint - technisch betrachtet liegt der Fehler in der Zeile: Import-Csv -Delimiter ";" -Path "c:\test\mappe1.csv" die sollte so aussehen: $ADUsers = Import-Csv -Delimiter ";" -Path "c:\test\mappe1.csv" damit Dein Script wie gewünscht funktioniert. Hallo Newbie Bringt aber auch nichts er liest mir die csv aus Listet diese aber legt keine neuen User in der AD an Ob Ich in der Zeile $ADUsers = eintrage oder nicht das Ergebnis ist das gleiche Es wird auch kein Fehler ausgegeben
MurdocX 1.004 Geschrieben 17. November 2016 Melden Geschrieben 17. November 2016 (bearbeitet) if (Get-ADUser -F {SamAccountName -eq $Username}) Ein Tipp aus meiner Erfahrung ist, nutze für "Get-ADUser" lieber "-like" anstatt "-eq". Manchmal reagiert der "-eq" trotz identischer Angaben nicht so wie gewünscht. Da wir hier eh über STRINGs (Zeichenketten) reden wäre "-like" sowieso der Richtige. https://www.windowspro.de/script/vergleichsoperatoren-powershell-eq-lt-gt-contains-match Des Weiteren ist deine Variable $password nicht gesetzt und der Wert muss vom Typ <SecureString> übergeben werden! bearbeitet 17. November 2016 von MurdocX
magheinz 111 Geschrieben 17. November 2016 Melden Geschrieben 17. November 2016 dir scheinen doe absoluten Grundlagen zu fehlen. pack doch mal eine Ausgabe in die Schleife un zu sehen wann die if-abfrage überhaupt true ist.
BOfH_666 586 Geschrieben 17. November 2016 Melden Geschrieben 17. November 2016 Siehste ... da hab ich vorhin gar nicht drauf geachtet. Du fragst in Deinem 'if' das AD ab, ob es den User schon gibt. Und wenn ja, dann willst Du genau diesen User neu anlegen. Soll das so sein? Wenn nicht, sollte die if - Zeile eher so aussehen: if (-not (Get-ADUser -Filter {SamAccountName -eq $Username})) und von mir auch noch ein kleiner Tipp: Backtick in Scripten zu benutzen ist gefährlich. Der BackTick ist ein Escape-Zeichen. Und wenn dahinter mal kein Zeilenumbruch kommt, sondern versehentlich ein Leerzeichen, was mann normalerweise nicht sieht, dann funktioniert das Ganze nicht mehr und es ist schwer zu ermitteln warum.
MurdocX 1.004 Geschrieben 17. November 2016 Melden Geschrieben 17. November 2016 (bearbeitet) Falls du die Daten aus Excel raus exportierst, dann solltest du dir auch über die Encodings im klaren sein. Hier werden die Daten mit der "ANSI"-Codierung abgespeichert. Somit musst du, um einen sauberen Import durchzuführen ein "-Encoding Default" anhängen. $ADUser = Import-Csv -Delimiter ";" -Path "c:\test\mappe1.csv" -Encoding Default Ohne Angabe, also "per default" ließt das CMDLet im "ASCII"-Encoding ein. https://msdn.microsoft.com/powershell/reference/5.1/microsoft.powershell.utility/Import-Csv @BOfH_666 Das ist mir als "logischer Fehler" erst gar nicht aufgefallen. Natürlich ist das logisch nur Benutzer anzulegen die noch nicht existieren. bearbeitet 17. November 2016 von MurdocX
BOfH_666 586 Geschrieben 17. November 2016 Melden Geschrieben 17. November 2016 @BOfH_666 Das ist mir als "logischer Fehler" erst gar nicht aufgefallen. Natürlich ist das logisch nur Benutzer anzulegen die noch nicht existieren. Ja - manchmal hat man Nachtschattengewächse auf den Augen. :schreck: :D
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