Nutzer und Gruppen mit CSV-Datei anlegen

Nutzer und Gruppen mittels CSV Datei anlegen

Das Skript liest eine CSV mit Nutzerdaten ein und erstellt für jeden Nutzer einen Microsoft 365 Account und eine passende Gruppe.

Sollte die Gruppe schon vorhanden sein, wird der neue Account der vorhandenen Gruppe hinzugefügt.

Beispiel CSV-Datei

Hier wird erklärt wie man Nutzer aus ASV exportiert.

Nach dem Export kann man die .CSV Datei auf den Desktop ablegen und folgendes Powershell Skript ausführen:

Das Skript benötigt das AzureAD Modul, welches vorher installiert werden muss:

Install-Module AzureAD

# Verbindung mit dem AzureAD Modul herstellen, wenn noch keine Verbindung besteht
try{
    Get-AzureADTenantDetail
}catch{
    Connect-AzureAD 
}

# CSV Datei wird eingelesen
$users = Import-Csv -Delimiter "," -Path "C:\Users\r.scheglmann\Desktop\accounts.csv" -Encoding UTF8

foreach($user in $users){
    $groupName = $user.GroupName
    $groupExists = Get-AzureADGroup -Filter "DisplayName eq '$groupName'"

    # Existiert die Gruppe noch nicht, wird diese neu erstellt
    if($groupExists -eq $NULL){
       New-AzureADGroup -DisplayName $groupName -MailEnabled $false -SecurityEnabled $true -MailNickName "NotSet"
       $groupExists = Get-AzureADGroup -Filter "DisplayName eq '$groupName'"
    }

    $userPrincipalName = $user.UserPrincipalName
    $userExists = Get-AzureADUser -Filter "UserPrincipalName eq '$userPrincipalName'"

    # Existiert der Nutzer noch nicht, wird dieser neu erstellt und der entsprechenden Gruppe zugewiesen
    if($userExists -eq $NULL){
        $PasswordProfile=New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
        #$PasswordProfile.ForceChangePasswordNextLogin = $True 
        $PasswordProfile.Password="Schueler2000"
        
        # erstellt einen neuen Nutzer
        $newUser = New-AzureADUser -DisplayName $user.DisplayName -GivenName $user.FirstName -SurName $user.LastName -UserPrincipalName $user.UserPrincipalName -MailNickName "" -PasswordProfile $PasswordProfile -AccountEnabled $true
    
        # fügt den neuen Nutzer der Gruppe hinzu
        Add-AzureADGroupMember -ObjectId $groupExists.ObjectId -RefObjectId $newUser.ObjectId
    }
}

Nutzer aus ASV exportieren und mit Passwort anlegen

Hier wird erklärt wie man Nutzer aus ASV exportiert.

Nach dem Export kann man die .CSV Datei auf den Desktop ablegen und folgendes Powershell Skript ausführen:

# Verbindung mit dem AzureAD Modul herstellen, wenn noch keine Verbindung besteht
try{
    Get-AzureADTenantDetail
}catch{
    Connect-AzureAD 
}

# CSV Datei wird eingelesen
$users = Import-Csv -Delimiter "," -Path "C:\Users\r.scheglmann\Desktop\accounts.csv" -Encoding UTF8

foreach($user in $users){
    
    $userPrincipalName = $user.UserPrincipalName
    $userExists = Get-AzureADUser -Filter "UserPrincipalName eq '$userPrincipalName'"

    # Existiert der Nutzer noch nicht, wird dieser neu erstellt und der entsprechenden Gruppe zugewiesen
    if($userExists -eq $NULL){
        $PasswordProfile=New-Object -TypeName Microsoft.Open.AzureAD.Model.PasswordProfile
        #$PasswordProfile.ForceChangePasswordNextLogin = $True 
        $PasswordProfile.Password=$user.Password
        
        # erstellt einen neuen Nutzer
        $newUser = New-AzureADUser -DisplayName $user.DisplayName -GivenName $user.FirstName -SurName $user.LastName -UserPrincipalName $user.UserPrincipalName -MailNickName $user.FirstName -PasswordProfile $PasswordProfile -AccountEnabled $true
    }
}

Angelegten Nutzern Gruppen zuweisen

Hier wird mit Hilfe einer .CSV Datei Nutzer in die Gruppe in der Spalte „GroupName“ hinzugefügt.

# Verbindung mit dem AzureAD Modul herstellen, wenn noch keine Verbindung besteht
try{
    Get-AzureADTenantDetail
}catch{
    Connect-AzureAD 
}

# Beispiel: hier werden alle Nutzer mit einem Merkmal in der E-Mailadresse gesucht
# $users = Get-AzureADUser -All $true | Where-Object {$_.UserPrincipalName -Match "s.scheglmann" }

# ODER:

# CSV Datei wird eingelesen mit Spalte "GroupName"
$users = Import-Csv -Delimiter "," -Path "C:\Users\r.scheglmann\Desktop\Office_Accounts.csv" -Encoding UTF8



foreach($user in $users){
    
    $userPrincipalName = $user.UserPrincipalName
    $userExists = Get-AzureADUser -Filter "UserPrincipalName eq '$userPrincipalName'"

    # nur wenn der Nutzer gefunden wurde, wird versucht die Gruppe zuzuweisen
    if($userExists){
        # speichert die ID vom Nutzer in einer Variablen    
        $objectID = $userExists.ObjectId
        
        $groupName = $user.GroupName
        $groupExists = Get-AzureADGroup -Filter "DisplayName eq '$groupName'"

        # Existiert die Gruppe noch nicht, wird diese neu erstellt
        if($groupExists -eq $NULL){
            New-AzureADGroup -DisplayName $groupName -MailEnabled $false -SecurityEnabled $true -MailNickName "NotSet"
            $groupExists = Get-AzureADGroup -Filter "DisplayName eq '$groupName'"
        }

        # versucht den Nutzer der Gruppe hinzuzufügen
        try { 
            Add-AzureADGroupMember -ObjectId $groupExists.ObjectId -RefObjectId $objectID
            Write-Host "Nutzer:" $userPrincipalName "wurde der Gruppe" $groupName "hinzugefügt."
        }
        catch { 
            Write-Host "Nutzer:" $userPrincipalName "ist bereits in der Gruppe" $groupName
        }        
    }else{
        Write-Host "Nutzer:" $userPrincipalName "existiert nicht."
    }
        
}

Links

unsere-schule.org

×

Nutzer und Gruppen mit CSV-Datei anlegen

Code: