
Malambo C/peopleimages.com - sto
Das Onboarding für Microsoft 365 per PowerShell optimieren
PowerShell und Microsoft Graph vereinfachen das Microsoft-365-Onboarding. So kann man das Einrichten Benutzerkonten, Lizenzen, Authentifizierung und Berechtigungen automatisieren.
Das Onboarding für Microsoft 365 ist eine Routineaufgabe für viele Administratoren. Eine Möglichkeit, diesen Aufwand zu reduzieren, besteht darin, die Schritte mit PowerShell zu automatisieren.
Wenn ein neuer Mitarbeiter anfängt, ist es Aufgabe des Administrators, ein neues Benutzerkonto mit allen erforderlichen Berechtigungen und Ressourcen einzurichten. Je nach Organisation kann der Prozess zum Onboarding eines Benutzers in Microsoft 365 kompliziert sein. Die meisten Schritte umfassen jedoch die Bereitstellung von Konten, die Zuweisung von Lizenzen und die Konfiguration von Berechtigungen für Rollen, Anwendungen oder Dienste. Insbesondere in großen Unternehmen ist es unerlässlich, einen optimierten Ansatz für die Einbindung von Benutzerkonten in Microsoft 365 zu verfolgen. Der beste Weg, dies zu erreichen, ist das Erlernen der Verwendung von PowerShell und Microsoft Graph zum Erstellen von Skripten, die einen Großteil des Onboardings automatisieren.
Welche PowerShell-Module sollten Sie verwenden?
Microsoft 365 bietet Standard-PowerShell-Module für die Verwaltung von Benutzern.
Bisher wurden entweder das Modul Microsoft Online PowerShell (MSOnline) oder das Modul Azure AD PowerShell verwendet. Microsoft hat beide PowerShell-Module im März 2024 eingestellt und wird nur noch Support zur Behebung kritischer Sicherheitsprobleme anbieten. Das bedeutet, dass die Module mindestens bis zum 30. März 2025 weiterhin funktionieren werden.
Microsoft empfiehlt Administratoren die Verwendung neuerer Tools, insbesondere des Microsoft Graph PowerShell SDK und des Moduls Microsoft Graph PowerShell. Microsoft hat viel Arbeit in Microsoft Graph investiert, um einen einheitlichen Verwaltungsansatz zu bieten, der die Arbeit von Administratoren in Microsoft 365 vereinfacht und gleichzeitig eine bessere Leistung und Skalierbarkeit bietet.
Microsoft empfiehlt IT-Mitarbeitern, vorhandene Skripts zu migrieren und neue Skripts mit dem Modul Microsoft Graph PowerShell zu erstellen.
So führen Sie Microsoft-365-Benutzerbereitstellungsaufgaben mit PowerShell aus
Die Benutzerbereitstellungsaufgaben lassen sich wie folgt unterteilen:
- Erstellung eines Kontos
- Lizenzzuweisung
- Konfiguration von Authentifizierungsmethoden
- Zuweisung von Berechtigungen
So erstellen Sie ein Microsoft-365-Benutzerkonto
Der Onboarding-Prozess beginnt in der Regel, wenn die IT-Abteilung ein Helpdesk-Ticket erhält, in dem ein neues Konto innerhalb der lokalen Active Directory oder Microsoft Entra ID (ehemals Azure AD) angefordert wird. Viele Unternehmen synchronisieren Konten aus der lokalen AD.
Mit PowerShell können Sie ein oder mehrere Benutzerkonten lokal oder direkt in Microsoft Entra ID erstellen. Wenn Sie Ihre Benutzer zu einem lokalen AD hinzufügen und dann mit Microsoft Entra ID synchronisieren, sollten Sie einen anderen Bereitstellungsprozess in PowerShell verwenden. Für reine Cloud-Unternehmen können Sie Microsoft Graph PowerShell verwenden, um ein Konto in Microsoft Entra ID zu erstellen, wie im folgenden Code gezeigt:
$scopes = @(
"User.ReadWrite.All"
"Directory.ReadWrite.All"
)
Connect-MgGraph -Scopes $scopes
$password = @{ Password = '<Password>' }
New-MgUser `
-DisplayName '<Display Name>' `
-PasswordProfile $password `
-AccountEnabled `
-MailNickName '<Mail Nickname>' `
-UserPrincipalName '<Username>@<Domain>.onmicrosoft.com'
Wenn Sie mehrere Konten erstellen müssen, können Sie eine CSV-Datei (Comma Separated Values) importieren und die gleichen Schritte für jeden Eintrag wiederholen:
$users = Import-Csv -Path "C:\User.csv"
$tempPassword = @{ Password = '<Password>' }
foreach ($user in $users)
{
New-MgUser `
-DisplayName $user.DisplayName `
-PasswordProfile $tempPassword `
-AccountEnabled `
-MailNickName $user.MailNickName `
-UserPrincipalName "$($user.Username)@<Domain>.onmicrosoft.com"
}
Seit Ende 2024 empfiehlt Microsoft aber für die Aufgabenautomatisierung die Nutzung der App-Only-Authentifizierung statt der Benutzeranmeldung. Das PowerShell-Skript wird in Entra ID über eine registrierte App authentifiziert und verwendet ein Client-Kennwort oder ein Zertifikat. So werden keine Anmeldeinformationen gespeichert oder wiederverwendet. Der App-Registrierung werden die notwendigen Berechtigungen für Microsoft Graph zugeteilt und anschließend melden Sie sich beispielsweise mit folgendem Befehl an:
Connect-MgGraph -ClientId <AppId> -TenantId <TenantId> -CertificateThumbprint <ZertifikatThumbprint>
So weisen Sie Lizenzen mit PowerShell zu
Nach dem Erstellen der Konten müssen Sie Lizenzen zuweisen. Nebenbei bemerkt sollten Sie möglichst gruppenbasierte Lizenzzuweisungen verwenden. Bei der PowerShell-Methode müssen Sie die Lizenz direkt dem Konto zuweisen, damit es Zugriff auf die erforderlichen Dienste hat:
# Mit den erforderlichen Berechtigungen verbinden
$scopes = @(
"Group.ReadWrite.All"
"GroupMember.ReadWrite.All"
)
Connect-MgGraph -Scopes $scopes
$user = Get-MgUser `
-ConsistencyLevel eventual `
-Search '"UserPrincipalName:<Username>"'
$license = Get-MgSubscribedSku -All | `
Where SkuPartNumber -eq 'EMSPREMIUM'
Set-MgUserLicense -UserId $user.Id `
-AddLicenses @{SkuId = $license.SkuId} `
-RemoveLicenses @()
Wenn Sie die Gruppenlizenzverwaltung verwenden, aber keine dynamischen Gruppen, müssen Sie den Benutzer der spezifischen Sicherheitsgruppe zuweisen, die dann die entsprechenden Lizenzen anwendet:
$user = Get-MgUser `
-ConsistencyLevel eventual `
-Search '"UserPrincipalName:<Username>"'
$group = Get-MgGroup `
-ConsistencyLevel eventual `
-Filter "startsWith(DisplayName, 'E5 License Group')"
New-MgGroupMember `
-GroupId $group.Id `
-DirectoryObjectId $user.Id
Konfiguration der Authentifizierungsmethoden
Es ist äußerst wichtig, bereitgestellte Konten mit zusätzlichen Authentifizierungsschutzmaßnahmen wie Single Sign-On und Multifaktor-Authentifizierung (MFA) zu sichern.
Um einem Benutzer MFA zuzuweisen, können Sie diese entweder auf Kontoebene festlegen oder bedingte Zugriffsrichtlinien für bestimmte Benutzer oder Sicherheitsgruppen verwenden. Letzteres ist die einfachste Methode, um sicherzustellen, dass MFA für ein Konto gilt.
Das folgende PowerShell-Skript fordert den Benutzer auf, sich für MFA zu registrieren. Wenn der Benutzer die Aufforderung ablehnt, erinnert ihn das System alle zwei Tage daran, bis er sich registriert:
# Mit den erforderlichen Berechtigungen verbinden
$scopes = @(
"Group.ReadWrite.All"
"GroupMember.ReadWrite.All"
"Policy.ReadWrite.AuthenticationMethod"
)
Connect-MgGraph -Scopes $scopes
$user = Get-MgUser `
-ConsistencyLevel eventual `
-Search '"UserPrincipalName:<Username>"'
# Aktivieren der Registrierung für die Multifaktor-Authentifizierung (MFA)
$params = @{
"@odata.context" = "https://graph.microsoft.com/v1.0/$metadata#authenticationMethodsPolicy"
RegistrationEnforcement = @{
AuthenticationMethodsRegistrationCampaign = @{
SnoozeDurationInDays = 2
State = "enabled"
ExcludeTargets = @()
IncludeTargets = @(
@{
Id = $user.Id
TargetType = "user"
TargetedAuthenticationMethod = "microsoftAuthenticator"
})
}
}
}
Update-MgPolicyAuthenticationMethodPolicy `
-BodyParameter $params
So weisen Sie Benutzerberechtigungen mit PowerShell zu
Nach der Bereitstellung des Kontos und dem Hinzufügen von Schutzmaßnahmen und Lizenzen müssen Sie dem Konto bestimmte Berechtigungen hinzufügen, zum Beispiel Mandantenrollen, Sicherheit oder Microsoft-365-Gruppen.
Weisen Sie Mandantenrollen nur den Benutzern zu, die diese benötigen. Verwenden Sie Sicherheitsmaßnahmen und Microsoft-365-Gruppen umfassend, um Berechtigungen und den Zugriff auf Speicherorte wie SharePoint Online und Microsoft Teams zu verwalten:
$scopes = @(
"User.ReadWrite.All"
"Directory.ReadWrite.All"
"Sites.Manage.All"
"RoleManagement.ReadWrite.Directory"
)
# Zuweisung einer Mandantenrolle zu einem Benutzer
$user = Get-MgUser `
-ConsistencyLevel eventual `
-Search '"UserPrincipalName:<Username>"'
$role = Get-MgRoleManagementDirectoryRoleDefinition `
-UnifiedRoleDefinitionId 62e90394-69f5-4237-9190-012177145e10
$params = @{
"@odata.type" = "#microsoft.graph.unifiedRoleAssignment"
RoleDefinitionId = $role.Id
PrincipalId = $user.Id
DirectoryScopeId = "/"
}
New-MgRoleManagementDirectoryRoleAssignment `
-BodyParameter $params
# Zuweisung eines Eigentümers zu einem Team
$user = "<Username>@<Domain>.onmicrosoft.com"
$owner = Get-MgUser -UserId $user
$properties = @{
"@odata.type" = "#microsoft.graph.aadUserConversationMember";
"[email protected]" = "https://graph.microsoft.com/v1.0/users/" + $owner.Id
}
$role = "owner"
$team = Get-MgTeam -TeamId "354d151c-cf85-4202-ba86-1ea47a271968"
New-MgTeamMember `
-TeamId $team.Id `
-Roles $role `
-AdditionalProperties $properties
So erledigen Sie alltägliche Benutzerbereitstellungsaufgaben mit PowerShell
Die PowerShell-Automatisierung eignet sich auch hervorragend für die Bereitstellung von Microsoft 365 über die standardmäßigen Onboarding-Aufgaben hinaus. Einige der häufigsten Aufgaben sind die folgenden:
- Konfiguration der Microsoft-Teams-Einstellungen und Erstellung von Teams und Kanälen
- Einrichtung von SharePoint-Websites und OneDrive for Business für die Dateispeicherung und Zusammenarbeit
- Konfiguration von Postfächern, E-Mail-Aliase und Postfachberechtigungen
- Implementierung von E-Mail-Aufbewahrungsrichtlinien und Archivierung
- Einrichtung von E-Mail-Sicherheitsfunktionen wie Antispam- und Antiphishing-Richtlinien
- Konfiguration von Richtlinien zur Data Loss Prevention
- Erstellung von Berichten
- Überprüfung der Audit-Protokolle
Als relativ neues Angebot weist Microsoft Graph PowerShell möglicherweise einige Lücken im Funktionsumfang auf. In solchen Fällen sollten Sie die Verwendung anderer etablierter PowerShell-Module oder der Benutzeroberfläche des Admin-Portals in Betracht ziehen:
# Microsoft-Teams-Einstellungen aktualisieren
$team = Get-MgTeam -TeamId "354d151c-cf85-4202-ba86-1ea47a271968"
$funSettings = @{ `
"allowGiphy" = "true"; `
"giphyContentRating" = "moderate"; `
"allowStickersAndMemes" = "true"; `
"allowCustomMemes" = "true"; `
}
Update-MgTeam `
-TeamId $team.Id `
-FunSettings $funSettings
# Überprüfung der Audit-Protokolle
$startDateTime = (Get-Date).AddDays(-7).ToString("yyyy-MM-ddTHH:mm:ssZ")
$endDateTime = (Get-Date).ToString("yyyy-MM-ddTHH:mm:ssZ")
Get-MgAuditLogDirectoryAudit `
-Filter "activityDateTime ge $startDateTime and activityDateTime le $endDateTime"
Optimieren Sie die Onboarding-Erfahrung mit PowerShell und Microsoft Graph
Die Microsoft-Graph- und PowerShell-Module bieten hervorragende Möglichkeiten zur Bereitstellung von Elementen im Microsoft-365-Mandanten. Der Hauptvorteil für Administratoren besteht darin, wiederholbare und konfigurierbare Skripte für einen reibungsloseren und schnelleren Benutzer-Onboarding-Prozess zu erstellen. Weitere Informationen zur Arbeit mit Microsoft Graph finden Sie in der offiziellen Dokumentation hier.