Office 365 Usermanagement mit Powershell
Wenn man in großen Unternehmen mit Office 365 arbeitet ist es meist unerlässlich, für Massenoperationen auf PowerShell zurück zu greifen. Office 365 bietet dazu unterschiedliche Commandlets an:
Gerade das Benutzermanagement, onboarding und aktivieren bzw. deaktivieren von Lizenzoptionen kann da bereits einiges an Hilfe leisten. In diesem Post möchte ich die wichtigsten Tätigkeiten eines Administrators rund um das Benutzermanagement zusammen fassen.
Zum Online Service verbinden
Connect-MsolService
Allen Benutzern eine Lokation (in diesem Beispiel Österreich - AT) zuweisen (DE, US, CH, IT, ES, NL, BE….)
Get-MsolUser –All | Set-MsolUser –UsageLocation AT
Einen Benutzer anlegen
Neue Benutzer lassen sich ebenfalls über PowerShell anlegen. In Office 365 gibt es 2 Mussfelder, die tatsächlich zwingend für die Benutzeranlage sind: Der UPN und der Displayname.
New-MsolUser -UserPrincipalName user@contoso.onmicrosoft.com ` -DisplayName 'User'
Möchten Sie gleich mehr Optionen hinzufügen und den User aktivieren, hilft dieses Beispiel weiter (bitte die Variablen dementsprechend ersetzen):
New-MsolUser -UserPrincipalName user@contoso.onmicrosoft.com ` -DisplayName 'User' –FirstName Martina –LastName Grom –UsageLocation AT
Damit der Benutzer auch gleich aktiviert wird (ihm eine Lizenz zugewiesen wird), verwenden Sie:
New-MsolUser -UserPrincipalName user@contoso.onmicrosoft.com ` -DisplayName 'User' –FirstName Martina –LastName Grom –UsageLocation AT –LicenseAssignment contoso:ENTERPRISEPACK
Einen Benutzer löschen
Um einen Benutzer zu löschen, verwenden Sie folgendes Kommando:
Remove-MsolUSER –UserPrincipalName user@contoso.com
Alle gelöschten Benutzer aus dem Papierkorb leeren
Get-MsolUser –ReturnDeletedUsers | Remove-MsolUser -RemoveFromRecycleBin –Force
Verfügbare Lizenzen eines Tenant abfragen
Get-MsolAccountSku
Benutzern eine bestimmte Lizenz zuweisen – Benutzer aktivieren
Wenn Sie nun Ihren Benutzern eine Lizenz zuweisen wollen, z.B. den E3 Plan, wie oben im Screenshot gezeigt:
Get-MsolUser -All | Set-MsolUserLicense -AddLicenses your-tenant-name:ENTERPRISEPACK
Falls Sie die Lizenzen jedoch nur einem bestimmten Benutzerkreis, z.B. allen Benutzern mit einem bestimmten UPN, der die Domain @contoso.com enthält, zuweisen wollen, lautet der Befehl so:
Get-MsolUser -All | where {$_.UserPrincipalName -match "\@contoso.com"} | Set-MsolUserLicense -AddLicenses your-tenant-name:ENTERPRISEPACK
Benutzern bestimmte Lizenzoptionen deaktivieren
Häufig kommt es vor, dass Benutzer zwar den E3 plan lizenziert bekommen, jedoch innerhalb diese Lizenzplans nicht alle Lizenzoptionen aktiviert werden sollen. Beispielsweise sollen die Benutzer mit der Domain @contoso.com zwar E3 als Lizenz bekommen, jedoch dann hier nur Exchange Online und Lync Online. In diesem Fall müssen die anderen Optionen deaktiviert werden.
Zunächst benötigen wir die Namen der einzelnen Lizenzoptionen:
Get-MsolAccountSku | Where-Object {$_.SkuPartNumber -eq 'ENTERPRISEPACK'} | ForEach-Object {$_.ServiceStatus}
Im nächsten Schritt merken wir uns in einer Variable $options, welche Lizenzoptionen wir deaktivieren möchten:
$options = New-MsolLicenseOptions -AccountSkuId contoso:ENTERPRISEPACK -DisabledPlans RMS_S_ENTERPRISE,OFFICESUBSCRIPTION,SHAREPOINTWAC,SHAREPOINTENTERPRISE
Nun wenden wir das auf alle User der Domain @contoso.com an
Get-MsolUser -All | where {$_.UserPrincipalName -match "\@contoso.com"} | Set-MsolUserLicense -LicenseOptions $options
Lizenzoptionen und Servicepläne
Hier eine kurze Zusammenfassung aller Lizenzoptionen und Servicepläne.
Serviceplan | Beschreibung |
contoso:STANDARDPACK | E1 (E2) |
contoso:ENTERPRISEPACK | E3 |
contoso:ENTERPRISEPACKWITHSCAL | E4 |
Lizenzoption | Beschreibung |
YAMMER_ENTERPRISE | Yammer Enterprise (werden nicht einzeln zugeordnet) |
RMS_S_ENTERPRISE | Active Directory-Rechte für Windows Azure |
OFFICESUBSCRIPTION | Office Professional Plus |
MCOSTANDARD | Lync Online (Plan 2) |
MCOVOICECONF | Lync Online (Plan 3) |
SHAREPOINTWAC | Office Web Apps |
SHAREPOINTSTANDARD | SharePoint Online (Plan 1) |
SHAREPOINTENTERPRISE | SharePoint Online (Plan 2) |
EXCHANGE_S_STANDARD | Exchange Online (Plan 1) |
EXCHANGE_S_ENTERPRISE | Exchange Online (Plan 2) |
Lizenzen von Benutzern wechseln
Wenn Sie die Lizenzen von Benutzern wechseln wollen, z.B. von E1 auf E3, geht das ebenso mit einem Einzeiler:
Get-MsolUser -all | Where {$_.Licenses.AccountSkuId -contains "your-tenant-name:STANDARDPACK"} | Set-MsolUserLicense -AddLicenses "your-tenant-name:ENTERPRISEPACK" -RemoveLicenses "your-tenant-name:STANDARDPACK"
Kennwörter nicht mehr ablaufen lassen
Für Serviceaccounts ist es manchmal praktisch, wenn die Kennwortrichtlinie deaktiviert wird.
Für einen einzelnen User:
Get-MsolUser –UserPrincipalName user@contoso.com | Set-MsolUser -PasswordNeverExpires $True
Für alle User
Get-MsolUser | Set-MsolUser -PasswordNeverExpires $True
Abfrage der Eigenschaften eines Users
Get-MsolUser –UserPrincipalName user@contoso.com | fl
Ein paar Hinweise zum Abschluss:
Bitte testen Sie solche Massenoperationen immer zuerst mit einem Benutzer. Über –UserPrincipalName user@contoso.com können Sie Ihre Auswahl sehr leicht auf einen Benutzer einschränken.
Führen Sie einen Lizenzwechsel immer in einem Schritt durch, da es ansonsten zu ungewünschten Nebeneffekten kommen kann!
Bei sehr vielen Benutzern dauert die Ausführung solcher Befehle eine ganze Weile, nur Geduld, wenn es etwas länger dauern sollte.
Für die Programmierer unter Ihnen: mit der Windows Azure Graph API lassen sich Benutzeroperationen bequem codieren. Diese Tätigkeiten sind dann zumeist performanter als mittels PowerShell. Aber dazu an anderer Stelle mehr.