← Zurück zum Wiki
Verbindung Nutzer Gruppen Lizenzen MFA & Anmeldung Sign-in-Logs

Verbindung herstellen

Das Microsoft.Graph-Modul installieren und mit den passenden Scopes verbinden.

SDK installieren

Einmalig pro Rechner. Das Meta-Modul zieht alle Untermodule (kann etwas dauern).

# Für den aktuellen Benutzer, ohne Adminrechte Install-Module Microsoft.Graph -Scope CurrentUser # Nur die schlankere Beta-/V1-Trennung nötig? Kernmodul reicht oft: # Install-Module Microsoft.Graph.Authentication -Scope CurrentUser # Installierte Version prüfen Get-InstalledModule Microsoft.Graph

Anmelden mit Scopes

Interaktive Anmeldung. Die angeforderten Scopes bestimmen, was die Sitzung darf.

# Interaktiv mit den benötigten Berechtigungen verbinden Connect-MgGraph -Scopes "User.ReadWrite.All","Group.ReadWrite.All","Organization.Read.All" # Aktuellen Kontext / angemeldeten Account anzeigen Get-MgContext # Sitzung beenden Disconnect-MgGraph

Nutzer verwalten

Abfragen, anlegen und deaktivieren von Benutzerkonten.

Nutzer abfragen

# Einzelnen Nutzer per UPN abrufen Get-MgUser -UserId "[email protected]" # Alle Nutzer mit ausgewählten Feldern Get-MgUser -All -Property DisplayName,UserPrincipalName,AccountEnabled | Select-Object DisplayName,UserPrincipalName,AccountEnabled # Nach Abteilung filtern (OData-Filter) Get-MgUser -Filter "department eq 'Vertrieb'" -All

Neuen Nutzer anlegen

Passwortprofil als Hashtable, Konto direkt aktiviert.

# Passwortprofil definieren $pw = @{ Password = "StartPasswort!2026" ForceChangePasswordNextSignIn = $true } # Nutzer erstellen New-MgUser -DisplayName "Max Mustermann" ` -UserPrincipalName "[email protected]" ` -MailNickname "max.mustermann" ` -AccountEnabled ` -PasswordProfile $pw ` -UsageLocation "DE"

Nutzer deaktivieren / löschen

# Konto sperren (deaktivieren) Update-MgUser -UserId "[email protected]" -AccountEnabled:$false # Wieder aktivieren Update-MgUser -UserId "[email protected]" -AccountEnabled:$true # Endgültig löschen (landet 30 Tage im Papierkorb) Remove-MgUser -UserId "[email protected]"

Gruppen & Mitgliedschaften

Sicherheitsgruppen anlegen und Mitglieder verwalten.

Gruppen abfragen & anlegen

# Gruppe per Anzeigename finden Get-MgGroup -Filter "displayName eq 'Vertrieb'" # Neue (zugewiesene) Sicherheitsgruppe erstellen New-MgGroup -DisplayName "Vertrieb" ` -MailEnabled:$false ` -MailNickname "vertrieb" ` -SecurityEnabled:$true

Mitglieder hinzufügen / entfernen / auflisten

# IDs ermitteln $gid = (Get-MgGroup -Filter "displayName eq 'Vertrieb'").Id $uid = (Get-MgUser -UserId "[email protected]").Id # Nutzer zur Gruppe hinzufügen New-MgGroupMember -GroupId $gid -DirectoryObjectId $uid # Mitglieder anzeigen Get-MgGroupMember -GroupId $gid -All # Nutzer wieder entfernen Remove-MgGroupMemberByRef -GroupId $gid -DirectoryObjectId $uid

Lizenzen zuweisen

Verfügbare SKUs ermitteln und einem Nutzer zuweisen.

Verfügbare Lizenzen (SKUs) auflisten

# Alle im Tenant gebuchten SKUs mit freien Einheiten Get-MgSubscribedSku -All | Select-Object SkuPartNumber, SkuId, @{N="Verbraucht";E={$_.ConsumedUnits}}, @{N="Gesamt";E={$_.PrepaidUnits.Enabled}}

Lizenz zuweisen & entfernen

Voraussetzung: UsageLocation des Nutzers ist gesetzt (z. B. „DE").

# SkuId der gewünschten Lizenz holen (Beispiel: Business Premium = SPB) $sku = (Get-MgSubscribedSku -All | Where-Object SkuPartNumber -eq "SPB").SkuId # Nutzungsstandort setzen (Pflicht vor Zuweisung) Update-MgUser -UserId "[email protected]" -UsageLocation "DE" # Lizenz zuweisen Set-MgUserLicense -UserId "[email protected]" ` -AddLicenses @{ SkuId = $sku } -RemoveLicenses @() # Lizenz wieder entfernen Set-MgUserLicense -UserId "[email protected]" ` -AddLicenses @() -RemoveLicenses @($sku)

MFA- & Anmelde-Status

Registrierte Authentifizierungsmethoden abfragen.

Registrierte Methoden eines Nutzers

Benötigt Scope UserAuthenticationMethod.Read.All.

# Verbindung mit passendem Scope Connect-MgGraph -Scopes "UserAuthenticationMethod.Read.All" # Alle registrierten Auth-Methoden (Authenticator, FIDO2, Telefon, ...) Get-MgUserAuthenticationMethod -UserId "[email protected]" | Select-Object Id, AdditionalProperties

MFA-Registrierung tenantweit auswerten

Report aus Identity Protection, benötigt AuditLog.Read.All (Bericht ist P1/P2-Feature).

# Registrierungsstatus aller Nutzer (MFA-fähig ja/nein) Get-MgReportAuthenticationMethodUserRegistrationDetail -All | Select-Object UserPrincipalName, IsMfaRegistered, IsMfaCapable | Sort-Object IsMfaCapable

Sign-in-Logs

Anmeldeprotokolle für Fehlersuche und Sicherheitsanalyse abfragen.

Anmeldungen abfragen

Benötigt Scope AuditLog.Read.All (Sign-in-Logs sind ein P1/P2-Feature).

# Verbindung mit passendem Scope Connect-MgGraph -Scopes "AuditLog.Read.All" # Letzte 20 Anmeldungen eines Nutzers Get-MgAuditLogSignIn -Top 20 ` -Filter "userPrincipalName eq '[email protected]'" | Select-Object CreatedDateTime, AppDisplayName, IpAddress, @{N="Status";E={$_.Status.ErrorCode}}

Fehlgeschlagene Anmeldungen filtern

# Nur fehlgeschlagene Anmeldungen (ErrorCode ungleich 0) Get-MgAuditLogSignIn -Top 50 ` -Filter "status/errorCode ne 0" | Select-Object CreatedDateTime, UserPrincipalName, IpAddress, @{N="Fehler";E={$_.Status.FailureReason}}
🔑
Scopes & Consent: Connect-MgGraph -Scopes … fordert genau die angegebenen Berechtigungen an. Beim ersten Mal muss ein Administrator zustimmen (Admin Consent) — danach greift die Delegated-Berechtigung im Rahmen der eigenen Rolle. Nach dem Least-Privilege-Prinzip nur die wirklich benötigten Scopes anfordern (z. B. User.Read.All statt User.ReadWrite.All, wenn nur gelesen wird). Für unbeaufsichtigte Automatisierung (App-only) statt interaktivem Login eine App-Registrierung mit Zertifikat nutzen: Connect-MgGraph -ClientId … -TenantId … -CertificateThumbprint ….