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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert