Mehrere AD Benutzer aus CSV Datei mit PowerShell erstellen
Hallo Admins
Mein Skript soll mehrere AD User aus einer CSV Datei per PowerShell erstellen. Soweit funktioniert das jeweils nur mit dem ersten Benutzer in der CSV-Datei, sprich mit dem ersten Eintrag. (Max Muster)
Danach erscheint diese Meldung fast endless (er versucht die erste Zeile wohl nochmal und nochmal zu erstellen):
Seht Ihr hier einen Hacken? Mache ich einen Denkfehler?
Vielen Dank schonmal im Voraus!
Gruss
Michael
Mein Skript soll mehrere AD User aus einer CSV Datei per PowerShell erstellen. Soweit funktioniert das jeweils nur mit dem ersten Benutzer in der CSV-Datei, sprich mit dem ersten Eintrag. (Max Muster)
Danach erscheint diese Meldung fast endless (er versucht die erste Zeile wohl nochmal und nochmal zu erstellen):
New-ADUser : Das angegebene Konto ist bereits vorhanden
In C:\temp\AD_User_erstellen_edit.ps1:50 Zeichen:5
+ New-ADUser -Name $FullName -SamAccountName $username.ToLower() `
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceExists: (CN=Max Muster,O...abproj,DC=local:String) [New-A
DUser], ADIdentityAlreadyExistsException
+ FullyQualifiedErrorId : ActiveDirectoryServer:1316,Microsoft.ActiveDirectory.Management.C
ommands.NewADUser
new-item : Ein Element mit dem angegebenen Namen "C:\Demo_User\Max.Muster" ist bereits
vorhanden.
In C:\temp\AD_User_erstellen_edit.ps1:46 Zeichen:5
+ new-item -Path "C:\Demo_User\" -name "$Username" -ItemType directory
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ResourceExists: (C:\Demo_User\Max.Muster:String) [New-Item], IOEx
ception
+ FullyQualifiedErrorId : DirectoryExist,Microsoft.PowerShell.Commands.NewItemCommand
Import-Module ActiveDirectory
# Pfad zur Benutzerliste
$PathUserList = "C:\temp\Demo\AD_User_Demo_3.csv"
# Variablen setzen
$Domain = "labproj.local"
$CustomerOU = "OU=Demo,OU=Benutzer,OU=Labor AG,DC=labproj,DC=local"
$input = New-Object -TypeName System.IO.StreamReader($PathUserList);
$file = $input.ReadLine();
$UserList = Import-Csv -Delimiter ";" -Path $PathUserList
#foreach ($User in $UserList)
#{
while ($file -ne $null){
$file = $file.Split(";")
$surname = $file
$name = $file[1]
$funktion = $file[2]
$FullName = $surname + " " + $name
$Username = $surname + "." + $name
# Random Passwort generieren
$pw1 = -join ((97..120) | Get-Random -Count 4 | foreach {[char]$_})
$pw2 = Get-Random
$pw2 = ("-" + $pw2).Substring(0,5)
$password = $pw1 + $pw2
# Homedirectory der User
new-item -Path "C:\Demo_User\" -name "$Username" -ItemType directory
$Directory = "C:\Demo_User\" + $Username
New-ADUser -Name $FullName -SamAccountName $username.ToLower() `
-AccountPassword (ConvertTo-SecureString -AsPlainText $password -force) -TrustedForDelegation $true `
-HomeDirectory $Directory -PassThru -Path $CustomerOU -GivenName $name -Surname $surname -Description $funktion `
-DisplayName $FullName -UserPrincipalName $username.ToLower() -ChangePasswordAtLogon $true -Enabled $true
}
Write-Host "Die Benutzer wurden im AD erfasst"
Sleep 3
Seht Ihr hier einen Hacken? Mache ich einen Denkfehler?
Vielen Dank schonmal im Voraus!
Gruss
Michael
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 318548
Url: https://administrator.de/contentid/318548
Ausgedruckt am: 22.11.2024 um 11:11 Uhr
1 Kommentar
$file = $input.ReadLine()
Logisch, du ließt nur einmal die erste Zeile ein und dann garnicht mehr, so bleibt das Teil in der Schleife hängen und benutzt immer nur die erste Zeile!Wieso machst du das denn überhaupt mit einer while Schleife ???? Du hast es doch dort schon mit Import-CSV viel schöner/effektiver gemacht?!