Benutzeranlage in Microsoft Azure Active Directory mittels Powershell

In letzter Zeit wurde ich gefragt bezüglich Useranlage in Azure AD bei einem Hybrid-Szenario.
Genauer gesagt handelte es sich bei der Frage um das Szenario, daß aus einem Fremdsystem eine CSV-Datei mit Benutzerdaten generiert wird und dementsprechend die Benutzerkonten im Azure AD angelegt werden sollen.

Im nachfolgenden Schnellstart werde ich auf folgende Themen eingehen:

  • Voraussetzungen schaffen um PowerShell für Azure AD zu verwenden
  • Verbinden und Anmelden
  • Benutzer anlegen
  • Benutzer anlegen aus CSV-Datei

Wie so oft gilt auch hier: Es ist recht einfach, wenn man einmal weiss wie's geht ;-)

Ob Hybrid oder nicht ist bei den nachfolgenden Beispielen eigentlich weniger von Bedeutung.
Grundsätzlich ist jedoch darauf zu achten, daß Benutzerkonten, die durch Active-Directory-Sync im Azure AD erstellt wurden einige andere Regeln gelten bzgl. löschen, Verändern von Eigenschaften, usw..

Danach ist es relativ einfach weitere Aktionen durchzuführen indem man sich 'mal die Hilfedateien ansieht.

Bei Fragen zu diesem Thema bitte gerne eine Mail an: Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!

Gerne auch Anfragen bzgl. Mitarbeit bei Projekten!

 

verwendete Systeme:

  • Server 2012 R2, mit Microsoft Azure Active Directory Connect zur Verzeichnissynchronisierung
  • ein Office 365 Account, mittels Office Admin Center (https://portal.office.com)


Voraussetzungen:


Modul Importieren

Einmalig müssen die neuen Cmdlets importiert werden.

Import-Module MSOnline -> keine Fehlermeldung = Import OK

Import-Module MSOnline -> erscheint keine Fehlermeldung, so war der Import OK

die neue Cmdlets können nun angezeigt werden mittels:
Get-Command -Module MSOnlin

oder in der ausführlichen Version mit:
Get-Command -Module MSOnline | Get-Help -Full

 

"In die Cloud verbinden"

die Verbindung in zum Azure Active Directory erfolgt mittels: Connect-MsolService

Hierzu sind Credentials notwendig wie sie auch für den Zugang zum Office Admin Centers (https://portal.office.com) benötigt werden.

Bei Testaccounts z.B.: Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!

Mittels folgendem Fünfzeiler kann eine Verbindung am anschaulichsten hergestellt werden.

$user = "Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!"
$pwd = 'DasKennwort'
$pwd = ConvertTo-SecureString -String $pwd -AsPlainText -Force
$cred = New-Object System.Management.Automation.PSCredential($user, $pwd)
Connect-MsolService -Credential $cred

Meistens wird man dies in einem Script verwenden wollen, und dabei ist sehr unschön, daß das Kennwort im Klartext im Script zu sehen ist.

Kennwort als SecureString

Abhilfe kann hier auf diese Art und Weise geschaffen werden:

einmal den SecureString errechnen lassen ...

$pwd = 'DasKennwort'
$pwd = ConvertTo-SecureString -String $pwd -AsPlainText -Force | ConvertFrom-SecureString

... und den Output im Script angeben.

Anmeldung im Script

Im Script sieht das Ganze dann also so aus:

$user = "Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!"
$pwd = "01000000d08c9ddf0115d1118c7a00c...........d139c14000000b52907674f47093f1750239eee6deddf834a9320" | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PSCredential($user, $pwd)
Connect-MsolService -Credential $cred

Anmerkung: Der SecureString wird mit Hilfe der SID des Benutzers errechnet. Kann also auch nur unter dessen Benutzerkonto zurückgerechnet werden.

Das Script zum Anzeigen aller User sieht also dann so aus:

$user = "Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!"
$pwd = "01000000d08c9ddf0115d1118c7a00c...........d139c14000000b52907674f47093f1750239eee6deddf834a9320" | ConvertTo-SecureString
$cred = New-Object System.Management.Automation.PSCredential($user, $pwd)
Connect-MsolService -Credential $cred
Get-MsolUser

 

Disconnect

Es gibt kein Disconnect.
Die Verbindung gilt nur für das PowerShell-Fenster in dem sie hergestellt wurde.
Beim Schließen des PowerShell Fensters existiert auch die Verbindung nicht weiter, oder bis der automatische Timeout zuschlägt.

 

Neuen User anlegen

New-MsolUser -UserPrincipalName "Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!" `
             -DisplayName "Dieter Dornmayr" `
             -FirstName "Dieter" `
             -LastName "Dornmayr" `
             -Password 'Pa$$w0rd'

 

 

User anlegen im Bulk

auch mehrere User aus CSV-Datei anlegen ist keine Hexerei

Beispiel für die CSV-Datei:

User.csv, in C:\Users\Administrator\Documents

Vorname,Nachname,Mail,Telefon,Handy,Land
Anna,Alster,Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!,01/123456789,0676/12345678,AT
Berthold,Burger,Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!,03254/1827,+43664/98765432,AT
Christian,Cipper,Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!,02236/12345,0664/76234212,DE
Doris,Dermatt,Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!,01/98765432-0,0680-123-43-23,AT
Ernst,Ebermann,Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein!,0505981276,0664/ 122 45 66,DE

das entsprechende Script dazu ist dann:

Import-CSV C:\Users\Administrator\Documents\User.csv |
    ForEach-Object {
        New-MsolUser -UserPrincipalName ($_.Vorname + "." + $_.Nachname + "@idd-services.at") `
   -DisplayName ($_.Vorname + " " + $_.Nachname) `
   -FirstName $_.Vorname `
   -LastName $_.Nachname `
   -AlternateEmailAddresses $_.Mail `
   -PhoneNumber $_.Telefon `
   -MobilePhone $_.Handy `
   -Country $_.Land `
   -Password 'Pa$$w0rd'
        }