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:
- ab Windows 7 bzw. Windows Server 2008R2,
theoretisch ist egal ob x32 oder x64, jedoch ist das Windows Azure Active Directory Module for Windows PowerShell nur mehr für 64Bit erhältlich
Windows Azure Active Directory Module for Windows PowerShell (64-bit version).
http://go.microsoft.com/fwlink/p/?linkid=236297
(seit October 20, 2014, Azure Active Directory Module for Windows PowerShell (32-bit version) is discontinued) - .Net Framework 3.5.1 (Hinweis: Bei 2012R2 als Feature installieren mittels Installations-DVD einlegen und Alternativen Pfad z.B.: D:\Sources\SxS\ angeben)
- Microsoft Online Service Anmelde Assistent (msoidcli_64bit, https://www.microsoft.com/de-at/download/details.aspx?id=28177)
Microsoft Online Services-Anmelde-Assistent für IT-Experten RTW
https://www.microsoft.com/de-at/download/details.aspx?id=41950
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'
}