5 PowerShell-Snippets für den Microsoft 365 Admin-Alltag
In diesem Beitrag teile ich fünf PowerShell-Snippets, die ich regelmäßig im Microsoft 365 Alltag nutze — von inaktiven Benutzern bis zum MFA-Status. Alle Beispiele basieren auf dem Microsoft Graph PowerShell SDK.
Voraussetzung: Microsoft Graph PowerShell SDK
Falls noch nicht installiert:
Install-Module Microsoft.Graph -Scope CurrentUser
Connect-MgGraph -Scopes "User.Read.All","AuditLog.Read.All","Reports.Read.All"
1. Inaktive Benutzer der letzten 90 Tage finden
$cutoff = (Get-Date).AddDays(-90)
Get-MgUser -All -Property DisplayName,UserPrincipalName,SignInActivity |
Where-Object { $_.SignInActivity.LastSignInDateTime -lt $cutoff } |
Select-Object DisplayName, UserPrincipalName, @{N='LastSignIn';E={$_.SignInActivity.LastSignInDateTime}}
Praktisch für regelmäßige Aufräumaktionen bei Lizenzen und verwaisten Konten.
2. Lizenzzuweisungen im Überblick
Get-MgUser -All -Property DisplayName,UserPrincipalName,AssignedLicenses |
Where-Object { $_.AssignedLicenses.Count -eq 0 } |
Select-Object DisplayName, UserPrincipalName
Listet alle Benutzer ohne zugewiesene Lizenz auf — nützlich, um verwaiste oder falsch angelegte Konten zu finden.
3. Gastbenutzer auditieren
Get-MgUser -All -Filter "userType eq 'Guest'" -Property DisplayName,Mail,CreatedDateTime |
Select-Object DisplayName, Mail, CreatedDateTime |
Sort-Object CreatedDateTime -Descending
Zeigt alle externen Gastkonten sortiert nach Erstellungsdatum — gut geeignet für regelmäßige Zugriffsreviews.
4. Postfachgrößen exportieren
Connect-ExchangeOnline
Get-Mailbox -ResultSize Unlimited |
Get-MailboxStatistics |
Select-Object DisplayName, TotalItemSize, ItemCount |
Export-Csv -Path "mailbox-sizes.csv" -NoTypeInformation
Erfordert das Exchange Online PowerShell Modul. Praktisch vor Migrationen oder bei der Kapazitätsplanung.
5. MFA-Status aller Benutzer prüfen
Get-MgUser -All -Property DisplayName,UserPrincipalName |
ForEach-Object {
$methods = Get-MgUserAuthenticationMethod -UserId $_.Id
[PSCustomObject]@{
User = $_.UserPrincipalName
MFA = ($methods.Count -gt 1)
}
} | Where-Object { -not $_.MFA }
Listet Benutzer ohne registrierte MFA-Methode auf — ein guter Ausgangspunkt, bevor eine Conditional-Access-Richtlinie zur MFA-Pflicht scharf geschaltet wird.
Fazit
Das Microsoft Graph PowerShell SDK deckt inzwischen fast alle Admin-Aufgaben ab, die früher über einzelne, teils veraltete Module liefen. Wer regelmäßig Reports oder Audits braucht, spart mit ein paar gespeicherten Snippets viel Klickarbeit im Portal.