tobivan
Goto Top

PowerShell-Skript zum Importieren ins AD aus einer csv

Hallo,
ich habe mir das ps-Skript von www.alitajran.com/import-ad-users-from-csv-powershell geholt und wollte es für meine Bedürfnisse anpassen:
$Csvfile = "Z:\import.csv"  
$Users = Import-Csv $Csvfile

# Import the Active Directory module
Import-Module ActiveDirectory

# Loop through each user
foreach ($User in $Users) {
    $GivenName = $User.'First name'  
    $Surname = $User.'Last name'  
    $DisplayName = $User.'Display name'  
    $SamAccountName = $User.'User logon name'  
    $UserPrincipalName = $User.'UPN User principal name'  
#    $AccountPassword = $User. 'User Password' 


 # Create new user parameters
    $NewUserParams = @{
        Name                      = "$Surname $GivenName"  
        GivenName             = $GivenName
        Surname                  = $Surname
        DisplayName           = $DisplayName
        SamAccountName   = $SamAccountName
        UserPrincipalName  = $UserPrincipalName
        #AccountPassword   = (ConvertTo-SecureString "$AccountPassword" -AsPlainText -Force) 
	Path			 = "OU=Pfad,OU=zu,OU=Benutzern,DC=Meine,DC=Firma,DC=de"  
        Enabled                    = $true
        ChangePasswordAtLogon = $false # Set the "User must change password at next logon" flag 
    }

    try {
        # Create the new AD user
        New-ADUser @NewUserParams
        Write-Host "User $SamAccountName created successfully." -ForegroundColor Cyan  
    }
    catch {
        # Failed to create the new AD user
        Write-Warning "Failed to create user $SamAccountName. $_"  
    }
}

Die csv-Datei schaut so aus:
"GivenName","Surname","DisplayName","SamAccountName","UserPrincipalName"  
"Lisa","Muster","Muster Lisa","MusterLi","MusterLi@Meine.Firma.de"  

Als Fehler erhalte ich in der PowerShell einzig das hier:
Warnung: Failed to create user . Der angegebene Name hat ein falsches Format für einen Kontonamen

Vielen Dank für Hilfe.
Gruß
Tobias

Content-ID: 8166839922

Url: https://administrator.de/contentid/8166839922

Ausgedruckt am: 08.11.2024 um 14:11 Uhr

Celiko
Lösung Celiko 16.08.2023 aktualisiert um 20:34:09 Uhr
Goto Top
Moin,

beim definieren der Parameter $GivenName, $Surname, usw. verwendest du falsche Properties, die nicht übereinstimmend sind mit deiner CSV.

Wenn du die CSV importierst kannst du ja mal in der Konsole folgendes eingeben:
Get-Member -InputObject $Users[0]

Hier siehst du dann welche Properties deine Variable $Users beinhaltet.
Bspw. wird in Zeile 9:
$GivenName = $User.'First name'    
eine Property mit "First Name" gesucht - den gibt es aber nicht. Deshalb ist auch die Variable $GivenName leer.

Müsste also:
$GivenName = $User.'GivenName'   
sein.

Properties werden definiert durch die Columns der CSV.
Der Kollege der das PS-Script veröffentlicht hat, hat andere CSV Columns. Kannst natürlich auch einfach die Columns in der CSV anpassen und dann sollte das auch gehen.

Versuch es mal damit - bin leider kein PS-Experte. Hier hat bestimmt jemand anderes direkt die Lösung parat für dich :D

VG
tobivan
tobivan 17.08.2023 um 09:25:26 Uhr
Goto Top
Vielen Dank, das hatte ich übersehen. Nun klappt's auch!