Server 2016 - neue User per Powershell Script anlegen
Hallo,
ich hab mich an einem Skript für Powershell probiert um mehrere User über eine csv-Datei auf dem Server anzulegen. Erst kam keine Fehlermeldung aber nachdem ich die einzulesenden Daten in Powershell hab anzeigen lassen, kam folgende Meldung schon beim ersten Benutzer:
Verarbeite Benutzer: AbromeitF
Fehler beim Erstellen von Benutzer AbromeitF: Eigenschaft "SamAccountName" wurde im Objekt vom Typ "System.Man
agement.Automation.PSCustomObject" nicht gefunden.
Das Skript sieht so aus:
kann jmd helfen?
ich hab mich an einem Skript für Powershell probiert um mehrere User über eine csv-Datei auf dem Server anzulegen. Erst kam keine Fehlermeldung aber nachdem ich die einzulesenden Daten in Powershell hab anzeigen lassen, kam folgende Meldung schon beim ersten Benutzer:
Verarbeite Benutzer: AbromeitF
Fehler beim Erstellen von Benutzer AbromeitF: Eigenschaft "SamAccountName" wurde im Objekt vom Typ "System.Man
agement.Automation.PSCustomObject" nicht gefunden.
Das Skript sieht so aus:
# Pfad zur OU
$ouDN = "OU=AlleSchueler,OU=Abschluss30,DC=fcsnetz,DC=local"
# Pfad zur CSV-Datei
$csvPath = "C:\Users\Administrator.FCSNETZ\Desktop\neue5er.csv"
# Importiere die Benutzerinformationen aus der CSV-Datei mit Semikolon als Trennzeichen
$users = Import-Csv -Path $csvPath -Delimiter ";"
# Überprüfen Sie die eingelesenen Benutzerinformationen
#hier hatte ich mir die Liste anzeigen lassen, was auch funktionierte
# Einheitliches Passwort für alle Benutzer (direkt als SecureString)
$securePassword = ConvertTo-SecureString "sommer5" -AsPlainText -Force
# Schleife durch die Benutzerliste und erstelle jeden Benutzer
foreach ($user in $users) {
Write-Host "Verarbeite Benutzer: $($user.SamAccountName)"
# Überprüfen, ob der Benutzer bereits existiert
try {
$existingUser = Get-ADUser -Filter {SamAccountName -eq $user.SamAccountName} -ErrorAction SilentlyContinue
if ($existingUser) {
Write-Host "Benutzer $($user.SamAccountName) existiert bereits, wird übersprungen."
} else {
# Neuen Benutzer in Active Directory erstellen
New-ADUser `
-SamAccountName $user.SamAccountName `
-UserPrincipalName "$($user.SamAccountName)@fcsnetz.local" `
-Name "$($user.GivenName) $($user.Surname)" `
-GivenName $user.GivenName `
-Surname $user.Surname `
-DisplayName $user.DisplayName `
-AccountPassword $securePassword `
-Enabled $true `
-Path $ouDN `
-ChangePasswordAtLogon $true `
-PasswordNeverExpires $true
Write-Host "Benutzer $($user.SamAccountName) wurde erfolgreich erstellt."
}
} catch {
Write-Host "Fehler beim Erstellen von Benutzer $($user.SamAccountName): $_"
}
}
Write-Host "Skript abgeschlossen."
kann jmd helfen?
Please also mark the comments that contributed to the solution of the article
Content-Key: 33866642906
Url: https://administrator.de/contentid/33866642906
Printed on: August 16, 2024 at 00:08 o'clock
5 Comments
Latest comment
Moin.
Filter mit curly braces sind besonders, hier funktionieren nur ganze Variablen kein Abrufen von Eigenschaften einer Variablen, deswegen auch der Fehler, schreibe den Filter stattdessen so
Resultat:
Gruß
Filter mit curly braces sind besonders, hier funktionieren nur ganze Variablen kein Abrufen von Eigenschaften einer Variablen, deswegen auch der Fehler, schreibe den Filter stattdessen so
# ....
$existingUser = Get-ADUser -Filter "SamAccountName -eq '$($user.SamAccountName)'" -EA SilentlyContinue
# ....
Resultat:
$ErrorActionPreference = 'Stop'
# Pfad zur OU
$ouDN = "OU=AlleSchueler,OU=Abschluss30,DC=fcsnetz,DC=local"
# Pfad zur CSV-Datei
$csvPath = "C:\Users\Administrator.FCSNETZ\Desktop\neue5er.csv"
# Importiere die Benutzerinformationen aus der CSV-Datei mit Semikolon als Trennzeichen
$users = Import-Csv -Path $csvPath -Delimiter ";"
# Einheitliches Passwort für alle Benutzer (direkt als SecureString)
$securePassword = ConvertTo-SecureString "sommer5" -AsPlainText -Force
# Schleife durch die Benutzerliste und erstelle jeden Benutzer
foreach ($user in $users) {
Write-Host "Verarbeite Benutzer: $($user.SamAccountName)"
# Überprüfen, ob der Benutzer bereits existiert
if (Get-ADUser -Filter "SamAccountName -eq '$($user.SamAccountName)'" -EA SilentlyContinue) {
Write-Host "Benutzer $($user.SamAccountName) existiert bereits, wird übersprungen."
} else {
# Neuen Benutzer in Active Directory erstellen
try {
New-ADUser `
-SamAccountName $user.SamAccountName `
-UserPrincipalName "$($user.SamAccountName)@fcsnetz.local" `
-Name "$($user.GivenName) $($user.Surname)" `
-GivenName $user.GivenName `
-Surname $user.Surname `
-DisplayName $user.DisplayName `
-AccountPassword $securePassword `
-Enabled $true `
-Path $ouDN `
-ChangePasswordAtLogon $true `
-PasswordNeverExpires $true
Write-Host "Benutzer $($user.SamAccountName) wurde erfolgreich erstellt."
} catch {
Write-Host "Fehler beim Erstellen von Benutzer $($user.SamAccountName): $_"
}
}
}
Write-Host "Skript abgeschlossen."
Gruß
Naja, du sagst in Zeile 22, dass die Variable $existingUser in der AD nach dem Benutzer suchen soll...
Dann nutzt du auch noch diese Variable, die keinen Wert hat, um einen User zu erstellen.
VG
Dann nutzt du auch noch diese Variable, die keinen Wert hat, um einen User zu erstellen.
PS C:\Users\Administrator.FCSNETZ> # Pfad zur OU
$ouDN = "OU=AlleSchueler,OU=Abschluss30,DC=fcsnetz,DC=local"
# Pfad zur CSV-Datei
$csvPath = "C:\Users\Administrator.FCSNETZ\Desktop\neue5er.csv"
# Importiere die Benutzerinformationen aus der CSV-Datei mit Semikolon als Trennzeichen
$users = Import-Csv -Path $csvPath -Delimiter ";"
# Überprüfen Sie die eingelesenen Benutzerinformationen
# Einheitliches Passwort für alle Benutzer (direkt als SecureString)
$securePassword = ConvertTo-SecureString "sommer5" -AsPlainText -Force
# Schleife durch die Benutzerliste und erstelle jeden Benutzer
foreach ($user in $users) {
Write-Host "Verarbeite Benutzer: $($user.SamAccountName)"
# Überprüfen, ob der Benutzer bereits existiert
if (Get-ADUser -Filter "SamAccountName -eq '$($user.SamAccountName)'")
{ Write-Host "Benutzer existiert, mache nix" }
else {
# Neuen Benutzer in Active Directory erstellen
New-ADUser `
-SamAccountName $user.SamAccountName `
-UserPrincipalName "$($user.SamAccountName)@fcsnetz.local" `
-Name "$($user.GivenName) $($user.Surname)" `
-GivenName $user.GivenName `
-Surname $user.Surname `
-DisplayName $user.DisplayName `
-AccountPassword $securePassword `
-Enabled $true `
-Path $ouDN `
-ChangePasswordAtLogon $true `
-PasswordNeverExpires $true
Write-Host "Benutzer $($user.SamAccountName) wurde erfolgreich erstellt."
}
}
Write-Host "Skript abgeschlossen."
VG