Jump to content

Script funktioniert nicht richtig


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Recommended Posts

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 activedirectory

Import-Csv -Delimiter ";" -Path "c:\test\mappe1.csv"

foreach ($User in $ADUsers)
{

$Username = $User.username
$Firstname = $User.firstname
$Lastname = $User.Lastname
$OU = $User.OU

if (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 `
    }
  }

Link to comment

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

Link to comment

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!

Edited by MurdocX
Link to comment

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.

Link to comment

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.

Edited by MurdocX
Link to comment
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...