Hobbit6416 0 Geschrieben 17. November 2016 Melden Teilen 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 ` } } Zitieren Link zu diesem Kommentar
testperson 1.708 Geschrieben 17. November 2016 Melden Teilen 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 Zitieren Link zu diesem Kommentar
magheinz 110 Geschrieben 17. November 2016 Melden Teilen Geschrieben 17. November 2016 Und wenn der User existiert soll er angelegt werden? Zitieren Link zu diesem Kommentar
Sunny61 807 Geschrieben 17. November 2016 Melden Teilen 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. ;) Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 17. November 2016 Melden Teilen 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. Zitieren Link zu diesem Kommentar
Hobbit6416 0 Geschrieben 17. November 2016 Autor Melden Teilen 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 Zitieren Link zu diesem Kommentar
MurdocX 954 Geschrieben 17. November 2016 Melden Teilen 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 Zitieren Link zu diesem Kommentar
magheinz 110 Geschrieben 17. November 2016 Melden Teilen 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. Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 17. November 2016 Melden Teilen 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. Zitieren Link zu diesem Kommentar
MurdocX 954 Geschrieben 17. November 2016 Melden Teilen 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 Zitieren Link zu diesem Kommentar
BOfH_666 577 Geschrieben 17. November 2016 Melden Teilen 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 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.