Die SharePoint Online Management Shell ist ein PowerShell-Modul für Administratoren zur Verwaltung von SharePoint Online. Installieren Sie es mit
Install-Module Microsoft.Online.SharePoint.PowerShellund stellen Sie die Verbindung her mitConnect-SPOService -Url https://<tenant>-admin.sharepoint.com. Das Modul ist ausschließlich für Windows; unter macOS und Linux verwenden Sie stattdessen PnP PowerShell.
Click-Fatigue ist real. Die SharePoint-Administration wird dramatisch schneller, sobald Sie aufhören, durch das Admin Center zu klicken, und stattdessen Befehle tippen. Eine einzige PowerShell-Zeile kann alle Sites in Ihrem Tenant inventarisieren, hundert veraltete Sites sperren oder dreihundert Benutzer den richtigen Gruppen hinzufügen – Arbeit, die im Browser einen Nachmittag kosten würde.
Dieser Leitfaden behandelt die SharePoint Online Management Shell von Grund auf: was sie ist, wie Sie sie unter Windows installieren (und was Sie stattdessen auf einem Mac tun), wie Sie sich in 2026 sicher verbinden, welche Cmdlets Sie tatsächlich verwenden werden und wie Sie Skripte schreiben, die Ihnen keine schlaflosen Nächte bereiten. Wir sind auch ehrlich darüber, wo PowerShell das falsche Werkzeug ist und eine konfigurierte App die Aufgabe besser erfüllt.
Was ist die SharePoint Online Management Shell?
Die SharePoint Online Management Shell ist ein Microsoft PowerShell-Modul – offiziell Microsoft.Online.SharePoint.PowerShell genannt – das Administratoren SharePoint-spezifische Befehle, sogenannte Cmdlets, zur Verwaltung eines Microsoft 365-Tenants, seiner Websitesammlungen und Benutzer über die Befehlszeile bereitstellt.
Sie installieren das Modul auf einer Admin-Workstation, verbinden sich mit dem SharePoint-Admin-Endpunkt Ihres Tenants und führen Verb-Substantiv-Befehle wie Get-SPOSite, Set-SPOTenant und Add-SPOUser aus. Jedes Cmdlet im Modul verwendet SPO als Nomen-Präfix, was es in einem Skript leicht erkennbar macht.
Zur Nutzung benötigen Sie die Rolle SharePoint-Administrator in Microsoft 365. Ein globaler Administrator hat ebenfalls ausreichende Rechte, und seit 2025 kann auch die Rolle SharePoint Embedded Administrator für containerbezogene Aufgaben eine Verbindung herstellen. Stand August 2026 umfasst das Modul rund 300 Cmdlets und wird etwa monatlich aktualisiert – der aktuelle Build ist 16.0.27515.12000, veröffentlicht Anfang August 2026.
Was Sie damit verwalten können
Stellen Sie sich drei Ebenen vor, plus eine vierte für umfangreiche Operationen:
- Websitesammlungsverwaltung – Websitesammlungen erstellen und löschen, Speicherkontingente ändern, Site-Richtlinien anwenden, Sites sperren und die standortspezifische Freigabe steuern.
- Benutzer- und Gruppenverwaltung – Benutzer zu Site-Gruppen hinzufügen, Site-Sammlungsadministratoren hoch- oder herabstufen, prüfen, wer Zugriff hat, und Personen sauber entfernen, wenn sie die Rolle wechseln.
- Tenant-weite Einstellungen – Richtlinien zur externen Freigabe, Speicherstandards, OneDrive-Verhalten und organisationsweite Feature-Schalter.
- Massenoperationen und Berichte – dieselbe Änderung auf Hunderte von Objekten anwenden oder ein Inventar als CSV für eine Zugriffsprüfung exportieren.
Neuere Builds gehen deutlich über den klassischen Funktionsumfang hinaus. Es gibt jetzt Cmdlets für Data Access Governance-Einblicke, Eingeschränkte Zugriffssteuerung, den Status von Microsoft 365 Archive, Dateiversionierungsrichtlinien für den Tenant, SharePoint Embedded Container sowie Berichte über den Zugriff von Copilot-Agents und Microsoft 365-Agents auf Ihre Sites – eine Governance-Oberfläche, die vor einigen Jahren noch nicht existierte.
Für wen es gedacht ist – und eine Warnung
Dies ist ein Werkzeug für Administratoren und IT-Fachleute. Es setzt voraus, dass Sie mit der Befehlszeile und Konzepten wie Rollen, Geltungsbereichen und Tenant-Richtlinien vertraut sind. Es ist nicht für normale Geschäftsanwender gedacht.
Es ist auch wirklich gefährlich, wie jedes leistungsstarke Werkzeug. Ein falsch geschriebener Filter kann jeden Site im Tenant sperren. Sinnvolle Sicherheitsvorkehrungen:
- Testen Sie zuerst in einem Nicht-Produktions-Tenant.
- Führen Sie Lese-Cmdlets (
Get-*) aus, um den Umfang zu bestätigen, bevor Sie ein Schreib-Cmdlet (Set-*,Add-*,Remove-*) verwenden. - Exportieren Sie einen Ausgangszustand vor Massenänderungen, damit Sie den vorherigen Stand nachweisen können.
- Halten Sie Skripte in der Versionskontrolle mit Review-Prozess.
Kann man PowerShell mit SharePoint verwenden? Ja. Verwenden Sie die SharePoint Online Management Shell für SharePoint Online (Verbindung mit
Connect-SPOService), die SharePoint Management Shell für lokale Farmen und plattformübergreifendes PnP PowerShell für die Automatisierung von Sites und Inhalten.
Was sich in 2026 geändert hat
Wenn Sie dieses Modul vor einigen Jahren kennengelernt haben, sind mehrere Dinge, an die Sie sich erinnern, inzwischen überholt. Dies ist die kurze Liste der Punkte, die Sie überprüfen sollten, bevor Sie ein altes Skript kopieren.
| Früher | Jetzt (August 2026) |
|---|---|
| Unbeaufsichtigte Jobs benötigten PnP PowerShell oder gespeicherte Anmeldedaten | Connect-SPOService unterstützt zertifikatbasierte App-only-Authentifizierung (-ClientId / -TenantId / -CertificateThumbprint) und verwaltete Azure-Identitäten |
| „Es gibt kein Disconnect-SPOService-Cmdlet" | Disconnect-SPOService existiert und ist dokumentiert – verwenden Sie es, um Sitzungen sauber zu beenden |
| PnP PowerShell verwendete eine gemeinsam genutzte mandantenübergreifende Entra-App | Diese App wurde am 9. September 2024 gelöscht. Sie müssen Ihre eigene Entra ID-Anwendung registrieren |
| PnP PowerShell lief unter Windows PowerShell 5.1 | PnP PowerShell v3 erfordert PowerShell 7.4 oder höher auf allen Plattformen |
| Nur SharePoint-Administrator und globaler Administrator konnten eine Verbindung herstellen | SharePoint Embedded Administrator kann ebenfalls eine Verbindung herstellen, für die Container-Verwaltung |
| Ein begrenzter Satz klassischer Site- und Tenant-Cmdlets | Rund 300 Cmdlets, einschließlich Data Access Governance, eingeschränkte Zugriffssteuerung, Microsoft 365 Archive, Tenant-Versionsrichtlinien und Copilot-Agent-Zugriffsberichte |
| SharePoint Server 2016 und 2019 waren unterstützte lokale Ziele | Beide erreichten am 14. Juli 2026 das End of Support – nur Subscription Edition wird noch unterstützt |
-UseWebLogin war die Umgehungslösung für problematische Anmeldungen | -UseSystemBrowser $true ist der unterstützte MSAL-basierte Flow (oder ein Registrierungsschlüssel, um ihn als Standard festzulegen) |
Abb. 1. Was sich in der SharePoint Online Management Shell bis 2026 geändert hat.
Zwei dieser Punkte verdienen besondere Aufmerksamkeit. Erstens ist die App-only-Authentifizierung jetzt erstklassig im SPO-Modul – Sie benötigen PnP PowerShell nicht mehr nur, um unbeaufsichtigte Jobs auszuführen. Zweitens ist die gemeinsame PnP-Mandanten-App endgültig verschwunden; jedes PnP-Skript, das vor September 2024 auf sie angewiesen war, funktioniert nicht mehr, und die Lösung besteht darin, Ihre eigene Entra ID-Anwendung zu registrieren.

Bild 1. SharePoint Online Management Shell auf einen Blick, August 2026.
Welches SharePoint PowerShell-Modul benötigen Sie?
Es gibt kein einzelnes „SharePoint PowerShell". Microsoft liefert je nachdem, wo SharePoint läuft und welche Ebene Sie ändern möchten, unterschiedliche Tools. Die Aufteilung ist einfach:
- SharePoint Online (Microsoft 365) → SharePoint Online Management Shell.
- SharePoint Server lokal → SharePoint Server Management Shell, wird mit dem Produkt installiert.
- Site- und Inhaltsautomatisierung, dienstübergreifende Aufgaben, Nicht-Windows-Maschinen → PnP PowerShell.

Bild 2. Auswahl zwischen den SharePoint PowerShell-Modulen.
SharePoint Online Management Shell (Cloud-Governance)
Das dedizierte Modul für die SharePoint Online-Administration. Installieren Sie es auf einer Windows-Admin-Workstation, stellen Sie eine Verbindung zum Tenant-Admin-Endpunkt her und führen Sie Cmdlets wie Get-SPOSite, Set-SPOSite, Add-SPOUser und Set-SPOTenant aus.
Am besten geeignet für: Tenant-Einstellungen, Lebenszyklus von Websitesammlungen, Kontingent- und Freigaberichtlinien, Benutzerzugriff, umfangreiche Governance-Änderungen.
Bezugsquelle: PowerShell Gallery oder das MSI-Installationsprogramm im Microsoft Download Center.
Plattform: Nur Windows. Unter PowerShell 7 wird es über die Windows PowerShell-Kompatibilitätsschicht geladen.
SharePoint Server Management Shell (lokale Farmen)
Wird mit SharePoint Server installiert. Es lädt das SharePoint-Snap-In und gibt Farm-Administratoren Befehle für Server, Dienstanwendungen, Webanwendungen, Inhaltsdatenbanken und die Suche.
Am besten geeignet für: Bereitstellung und Wartung einer Farm.
Plattform: Windows Server, auf einem Farm-Server ausgeführt.
Wissenswert: SharePoint Server 2016 und 2019 erreichten am 14. Juli 2026 das End of Support. Subscription Edition ist die einzige noch unterstützte lokale Version.
PnP PowerShell (plattformübergreifend, umfangreich)
Ein von der Community betriebenes, von Microsoft unterstütztes Modul, das sich auf Site-Ebene und Informationsarchitektur in SharePoint und dem weiteren Microsoft 365-Ökosystem konzentriert – Bereitstellungsvorlagen, Listen und Bibliotheken, Seiten, Inhaltstypen, Teams, Planner und Entra.
Am besten geeignet für: alltägliche Site-Automatisierung, Bereitstellung, Inhaltsoperationen, CI/CD-Pipelines.
Befehlsumfang: über 700 Cmdlets.
Plattform: Windows, macOS und Linux. Erfordert PowerShell 7.4 oder höher.
Hinweis: Sie müssen Ihre eigene Entra ID-Anwendung registrieren – die gemeinsam genutzte PnP Management Shell-App wurde im September 2024 gelöscht.
CLI für Microsoft 365 (die dritte Option)
Es lohnt sich, dies zu kennen, auch wenn es kein PowerShell ist: Die CLI für Microsoft 365 ist ein Node.js-Tool derselben PnP-Community, das SharePoint und Microsoft 365 über bash, zsh oder jede beliebige Shell verwaltet. npm i -g @pnp/cli-microsoft365. Wenn Sie einen Mac haben und PowerShell meiden möchten, ist das Ihr Weg.
| Szenario | Verwenden Sie | Verbindungsart | Plattform |
|---|---|---|---|
| Tenant-Richtlinien, Kontingente, Freigaberegeln, Site-Inventar, Governance-Berichte | SharePoint Online Management Shell | Connect-SPOService -Url https://<tenant>-admin.sharepoint.com | Nur Windows |
| Server, Datenbanken, Dienstanwendungen auf einer lokalen Farm | SharePoint Server Management Shell | „SharePoint Management Shell" auf dem Server öffnen | Windows Server |
| Sites, Listen, Bibliotheken, Seiten; dienstübergreifende Flows (Teams, Planner, Entra) | PnP PowerShell | Connect-PnPOnline -Interactive -ClientId <your app> | Windows, macOS, Linux (PS 7.4+) |
| Microsoft 365 über bash oder zsh verwalten oder aus einer Nicht-PowerShell-Pipeline | CLI für Microsoft 365 | m365 login | Jede Plattform mit Node.js |
| Routinemäßige Betriebsaufgaben – Alerts, Massen-Dateioperationen, Kalender, Workflows | Virto-Apps für SharePoint | In der SharePoint- oder Teams-Oberfläche konfigurieren | Browser |
Abb. 2. Welches SharePoint PowerShell-Tool für welchen Zweck geeignet ist.
So installieren Sie die SharePoint Online Management Shell unter Windows
Voraussetzungen
- Eine Windows-Maschine – das Modul ist nur für Windows.
- Windows PowerShell 5.1 oder PowerShell 7 unter Windows mit der Kompatibilitätsschicht.
- Netzwerkzugang zu Microsoft 365.
- Ein Konto mit der Rolle SharePoint-Administrator (oder globaler Administrator).
Option A – PowerShell Gallery (empfohlen)
Dies ist die bevorzugte Option, da das Update mit einem einzigen Befehl erfolgt statt mit einem weiteren Download.
Öffnen Sie Windows PowerShell als Administrator und führen Sie Folgendes aus:
Install-Module Microsoft.Online.SharePoint.PowerShell -Scope AllUsers
# Aktuell halten – neue Builds erscheinen etwa monatlich
Update-Module Microsoft.Online.SharePoint.PowerShell
Falls Ihre Ausführungsrichtlinie die Installation blockiert, benötigen Sie möglicherweise Set-ExecutionPolicy RemoteSigned -Scope LocalMachine – prüfen Sie dies zuerst mit Ihrem Sicherheitsteam, und bevorzugen Sie nach Möglichkeit das engere -Scope CurrentUser.
Option B – MSI aus dem Microsoft Download Center
Laden Sie das SharePoint Online Management Shell-Installationsprogramm von Microsoft herunter, führen Sie es aus und akzeptieren Sie die Standardeinstellungen. Das Modul wird in Windows PowerShell verfügbar, zusammen mit einer dedizierten „SharePoint Online Management Shell"-Verknüpfung im Startmenü.
Eine Regel beim MSI-Weg: Deinstallieren Sie die Vorgängerversion zuerst. Microsofts eigene Fehlerbehebungshinweise nennen veraltete Parallelinstallationen als häufige Ursache für merkwürdiges Cmdlet-Verhalten.
Prüfen, was installiert ist
# Alles, was auf dem Datenträger gefunden wird
Get-Module Microsoft.Online.SharePoint.PowerShell -ListAvailable |
Select-Object Name, Version, Path
# Falls es aus der PowerShell Gallery stammt
Get-InstalledModule Microsoft.Online.SharePoint.PowerShell |
Select-Object Name, Version
Wenn nichts zurückgegeben wird, ist das Modul auf dieser Maschine nicht installiert. Wenn zwei Versionen zurückgegeben werden, entfernen Sie die alte.
Ausführung unter PowerShell 7
Das Modul zielt auf .NET Framework ab, sodass PowerShell 7 es nicht nativ laden kann. Importieren Sie es stattdessen über das Windows PowerShell-Kompatibilitäts-Shim:
Import-Module Microsoft.Online.SharePoint.PowerShell -UseWindowsPowerShell
Dadurch wird das Modul in einem Windows PowerShell-Hintergrundprozess ausgeführt und die Cmdlets werden in Ihre PS7-Sitzung weitergeleitet. Dies funktioniert gut für die interaktive Nutzung; für intensive Automatisierung führen Sie SPO-Aufgaben in einem Windows PowerShell 5.1-Runspace aus.
Ein bekannter Konflikt, den man kennen sollte
Wenn das SharePoint Client Components SDK auf derselben Maschine installiert ist, kann das SPO-Modul möglicherweise überhaupt nicht geladen werden. Tritt dieses Problem auf, deinstallieren Sie das SDK. Das überrascht viele, weil die Fehlermeldung nichts vom SDK erwähnt.
Verwendung auf einem Mac
Hier ist die ehrliche Antwort, da viele Anleitungen das verschweigen: Die SharePoint Online Management Shell läuft nicht unter macOS. Es ist ein Windows PowerShell-Modul, das auf .NET Framework aufbaut, es gibt keine Homebrew-Formel, und Install-Module Microsoft.Online.SharePoint.PowerShell auf einem Mac schlägt entweder fehl oder installiert ein Modul, dessen Cmdlets beim Aufruf sofort einen Fehler werfen.
Mac-Admins haben vier echte Optionen.

Bild 3. Vier Wege für Mac-Admins zur Verwaltung von SharePoint Online.
Option 1 – PnP PowerShell (die übliche Antwort)
PnP PowerShell ist plattformübergreifend und deckt den Großteil dessen ab, was die meisten Admins benötigen. Installieren Sie zunächst PowerShell 7, dann das Modul:
# PowerShell 7 installieren (Homebrew)
brew install --cask powershell
# Dann innerhalb von pwsh
Install-Module PnP.PowerShell -Scope CurrentUser
Registrieren Sie Ihre eigene Entra ID-Anwendung, bevor Sie eine Verbindung herstellen – dies ist seit September 2024 zwingend erforderlich. Gewähren Sie ihr nur die Berechtigungen, die Ihre Skripte tatsächlich benötigen, und stellen Sie dann interaktiv eine Verbindung her:
Connect-PnPOnline -Url https://<tenant>.sharepoint.com/sites/ProjectX `
-Interactive -ClientId <your-entra-app-client-id>
Option 2 – CLI für Microsoft 365
Node-basiert, kein PowerShell erforderlich, und es deckt Tenant-weite SharePoint-Einstellungen ab, die PnP nicht hat:
npm i -g @pnp/cli-microsoft365
m365 login
m365 spo site list
Option 3 – Azure Cloud Shell oder eine Windows-VM
Wenn Sie ein echtes SPO-Cmdlet benötigen – zum Beispiel Set-SPOTenant mit einem Parameter, für den PnP kein Äquivalent hat –, führen Sie es dort aus, wo Windows existiert. Eine kleine Azure-VM, Windows 365, Parallels oder ein Build-Agent funktionieren alle. In Kombination mit zertifikatbasierter App-only-Authentifizierung ist ein Azure Automation Runbook ein sauberer Weg, SPO-Cmdlets zu planen, ohne eine Workstation einzubeziehen.
Option 4 – das SharePoint Admin Center
Offensichtlich, aber es sei erwähnt. Die meisten einmaligen Tenant-Einstellungen erfordern zwei Klicks im Browser und funktionieren unter macOS genauso.
| Aufgabe | SPO-Modul (Windows) | PnP PowerShell (jedes OS) |
|---|---|---|
| Sites auflisten | Get-SPOSite -Limit All | Get-PnPTenantSite |
| Eine Site erstellen | New-SPOSite | New-PnPSite -Type CommunicationSite |
| Site-Einstellungen ändern | Set-SPOSite | Set-PnPTenantSite |
| Benutzer zu einer Site-Gruppe hinzufügen | Add-SPOUser | Add-PnPGroupMember |
| Tenant-weite Einstellungen | Set-SPOTenant | Set-PnPTenant |
| Site löschen / wiederherstellen | Remove-SPOSite / Restore-SPODeletedSite | Remove-PnPTenantSite / Restore-PnPTenantRecycleBinItem |
| Mit Listen, Dateien, Seiten arbeiten | Nicht unterstützt | Get-PnPList, Add-PnPFile, Add-PnPPage und viele mehr |
Abb. 3. Gängige SPO-Cmdlets und ihre PnP PowerShell-Entsprechungen für Mac- und Linux-Admins.
Kann man die SharePoint Online Management Shell auf einem Mac installieren? Nein. Es ist ein reines Windows-Modul. Unter macOS verwenden Sie PnP PowerShell (
Install-Module PnP.PowerShell, PowerShell 7.4+) oder die CLI für Microsoft 365 und greifen für die wenigen SPO-exklusiven Cmdlets auf eine Windows-VM oder Azure Cloud Shell zurück.
So verbinden Sie PowerShell mit SharePoint Online
Die grundlegende Verbindung
Ersetzen Sie <tenant> durch Ihren Microsoft 365-Tenant-Namen – denselben, der in Ihren SharePoint-URLs erscheint:
Connect-SPOService -Url https://<tenant>-admin.sharepoint.com
Sie erhalten eine moderne Authentifizierungsaufforderung. Melden Sie sich mit Ihrem SharePoint-Administratorkonto an und schließen Sie die MFA ab. Das war es – Sie sind verbunden und bleiben es, bis Sie die Verbindung trennen oder die Sitzung schließen.
Pro PowerShell-Sitzung und geografischem Bereich wird nur eine SPO-Verbindung unterstützt. Das erneute Ausführen von Connect-SPOService ersetzt die bestehende Verbindung stillschweigend, anstatt eine zweite hinzuzufügen – was wichtig ist, wenn Sie mehrere Tenants in einem Fenster verwalten.
Anmeldung über den Systembrowser
Wenn das eingebettete Anmeldedialogfeld Probleme bereitet – ein häufiges Symptom bei Richtlinien für bedingten Zugriff oder zertifikatbasierter Authentifizierung –, leiten Sie die Authentifizierung an Ihren Standardbrowser weiter:
Connect-SPOService -Url https://<tenant>-admin.sharepoint.com -UseSystemBrowser $true
Um das ständige Eingeben zu vermeiden, setzen Sie den Registrierungswert UseSystemBrowser (REG_DWORD, ungleich null) unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SPO\CMDLETS\.
Unbeaufsichtigt: zertifikatbasierte App-only-Authentifizierung
Dies ist die moderne Methode für geplante Jobs, und sie beseitigt den letzten guten Grund, Admin-Anmeldedaten in einem Skript zu speichern. Registrieren Sie eine Entra ID-Anwendung, gewähren Sie ihr die benötigten SharePoint-Anwendungsberechtigungen, laden Sie ein Zertifikat hoch und verbinden Sie sich dann:
Connect-SPOService -Url https://<tenant>-admin.sharepoint.com `
-ClientId 00000000-0000-0000-0000-000000000000 `
-TenantId 11111111-1111-1111-1111-111111111111 `
-CertificateThumbprint "3FAAAA1111AAAAAAAAAAA2222AAAAAAAAAAAAAAA"
Sie können auch einen .pfx-Pfad mit -CertificatePath und -CertificatePassword übergeben oder ein aus dem lokalen Speicher abgerufenes Zertifikatobjekt verwenden.
Unbeaufsichtigt in Azure: Verwaltete Identität
Wenn Ihre Automatisierung bereits in Azure läuft, überspringen Sie Zertifikate vollständig:
# Systemseitig zugewiesene verwaltete Identität
Connect-SPOService -Url https://<tenant>-admin.sharepoint.com -ManagedIdentity
Benutzerseitig zugewiesene Identitäten funktionieren ebenfalls über -ManagedIdentityType UserAssigned -ManagedIdentityClientId <guid>.
Sovereign- und Regierungsclounds
Verwenden Sie -Region, um einen nicht standardmäßigen Authentifizierungsendpunkt anzusteuern. Gültige Werte sind Default, ITAR (GCC High und DoD), Delos (Deutsche Sovereign Cloud), France, Germany und China.
Verbindung trennen
Disconnect-SPOService beendet die Sitzung explizit. Ältere Anleitungen – einschließlich früherer Versionen dieser – behaupteten, ein solches Cmdlet existiere nicht. Es existiert, ist dokumentiert und sollte am Ende von Skripten verwendet werden. Beachten Sie, dass bereits gestartete Langzeitoperationen weiterhin bis zum Abschluss ausgeführt werden.
Wie verbinde ich PowerShell mit SharePoint Online? Installieren Sie das Modul, öffnen Sie PowerShell und führen Sie
Connect-SPOService -Url https://<tenant>-admin.sharepoint.comaus. Melden Sie sich dann mit einem SharePoint-Administratorkonto an. Für unbeaufsichtigte Skripte verwenden Sie die zertifikatbasierte App-only-Authentifizierung mit-ClientId,-TenantIdund-CertificateThumbprint.
Verbindung mit einer Site statt mit dem Tenant
Ein häufiger Punkt der Verwirrung. Das SPO-Modul stellt nur eine Verbindung zum Admin-Endpunkt her – https://<tenant>-admin.sharepoint.com. Einzelne Sites werden dann mit Parametern wie -Identity oder -Site angesteuert. Es gibt kein Connect-SPOSite.
Wenn Sie innerhalb einer Site arbeiten möchten – Listen, Bibliotheken, Dateien, Seiten –, ist das die Aufgabe von PnP PowerShell:
Connect-PnPOnline -Url https://<tenant>.sharepoint.com/sites/ProjectX `
-Interactive -ClientId <your-entra-app-client-id>
Wichtige SharePoint Online PowerShell-Befehle
| Bereich | Cmdlet | Typische Verwendung | Beispiel |
|---|---|---|---|
| Sites | Get-SPOSite | Sites inventarisieren und filtern | Get-SPOSite -Limit 50 |
| Sites | New-SPOSite | Eine Websitesammlung erstellen | New-SPOSite -Url ... -Template SITEPAGEPUBLISHING#0 |
| Sites | Set-SPOSite | Kontingent, Freigabe, Sperrzustand ändern | Set-SPOSite -Identity ... -LockState NoAccess |
| Benutzer | Get-SPOUser | Prüfen, wer Zugriff auf eine Site hat | Get-SPOUser -Site ... |
| Benutzer | Add-SPOUser | Einen Benutzer zu einer Site-Gruppe hinzufügen | Add-SPOUser -Site ... -Group "Members" -LoginName ... |
| Benutzer | Set-SPOUser | Site-Sammlungsadministrator umschalten | Set-SPOUser -IsSiteCollectionAdmin $true |
| Tenant | Get-SPOTenant | Tenant-weite Konfiguration lesen | `Get-SPOTenant |
| Tenant | Set-SPOTenant | Standard-Linktypen, Features, Speicher | Set-SPOTenant -DefaultSharingLinkType Internal |
| Lebenszyklus | Remove-SPOSite | Eine Websitesammlung löschen | Remove-SPOSite -Identity ... -Confirm:$true |
| Lebenszyklus | Get-SPODeletedSite | Den Tenant-Papierkorb einsehen | Get-SPODeletedSite -Limit All |
| Lebenszyklus | Restore-SPODeletedSite | Eine gelöschte Site wiederherstellen | Restore-SPODeletedSite -Identity ... |
| Governance | Get-SPODataAccessGovernanceInsight | Berichte zu übermäßiger Freigabe und Zugriff | Get-SPODataAccessGovernanceInsight -ReportEntity SharingLinks_Anyone |
| Governance | Set-SPOSiteArchiveState | Eine Site archivieren oder reaktivieren | Set-SPOSiteArchiveState -Identity ... -ArchiveState Archived |
Abb. 4. Kurzübersicht der wichtigsten SPO-Cmdlets.

Bild 4. Die am häufigsten verwendeten SPO-Cmdlets.
Sites auflisten und filtern
Beginnen Sie mit schreibgeschützten Aktionen. Get-SPOSite bestätigt Ihre Verbindung und zeigt Ihnen, was Sie verwalten:
Get-SPOSite -Limit 50 |
Select-Object Url, Owner, Template, StorageQuota, StorageUsageCurrent, LockState |
Format-Table -AutoSize
In wenigen Sekunden haben Sie URLs, Besitzer, Vorlagen, Kontingente, Speicherverbrauch und Sperrzustand – die Rohdaten für Audits, Lizenzprüfungen und Bereinigungsprojekte.
Die Filterung macht den eigentlichen Nutzen aus:
# Sites, die mehr als 50 GB nutzen (Werte in MB)
Get-SPOSite -Limit All | Where-Object { $_.StorageUsageCurrent -gt 51200 }
# Eine bestimmte Site
Get-SPOSite -Identity https://<tenant>.sharepoint.com/sites/ProjectX
# Alles, was mit externen Personen geteilt wird
Get-SPOSite -Limit All | Where-Object { $_.SharingCapability -ne 'Disabled' } |
Select-Object Url, SharingCapability
Eine Websitesammlung erstellen
New-SPOSite `
-Url https://<tenant>.sharepoint.com/sites/MarketingHub `
-Owner admin@<tenant>.onmicrosoft.com `
-Title "Marketing Hub" `
-Template SITEPAGEPUBLISHING#0 `
-StorageQuota 102400 # Megabyte – hier 100 GB
Zwei Dinge sind zu beachten. Der Vorlagenwert ist wichtig und leicht falsch einzugeben – eine Kommunikationssite ist SITEPAGEPUBLISHING#0, nicht COMMUNICATIONSITE#0, was in überraschend vielen Blogbeiträgen auftaucht und nicht funktioniert. Eine nicht gruppenbezogene Teamsite ist STS#3. Gruppenbezogene Teamsites werden über Microsoft 365-Gruppen erstellt, nicht über dieses Cmdlet.
Zweitens: -StorageQuota wird in Megabyte angegeben. 102400 sind 100 GB, nicht 100 TB.
Benutzer und Zugriff verwalten
In SharePoint Online gewähren Sie Zugriff über Site-Gruppen – Besitzer, Mitglieder, Besucher – und nicht direkt an Einzelpersonen. Zuerst inventarisieren, dann ändern:
# Wer hat Zugriff auf diese Site, Admins zuerst
Get-SPOUser -Site https://<tenant>.sharepoint.com/sites/ProjectX |
Select-Object LoginName, IsSiteCollectionAdmin |
Sort-Object IsSiteCollectionAdmin -Descending
# Einen Benutzer zu einer Site-Gruppe hinzufügen
Add-SPOUser `
-Site https://<tenant>.sharepoint.com/sites/ProjectX `
-Group "ProjectX Members" `
-LoginName alex@contoso.com
Benutzer in großem Umfang aus einer CSV hinzuzufügen, verwandelt einen Nachmittag in einen einzeiligen Befehl:
# users.csv hat eine Kopfzeile: UserPrincipalName
$site = "https://<tenant>.sharepoint.com/sites/ProjectX"
$group = "ProjectX Members"
Import-Csv .\users.csv | ForEach-Object {
Add-SPOUser -Site $site -Group $group -LoginName $_.UserPrincipalName
}
Seien Sie bei Set-SPOUser -IsSiteCollectionAdmin $true bedacht. Ein Site-Sammlungsadministrator hat vollständige Kontrolle über die gesamte Websitesammlung und umgeht normale Berechtigungen. Geben Sie die genaue Site-URL an und denken Sie daran, dass Sie dies mit $false rückgängig machen können.
Site-Einstellungen ändern
Site-Einstellungen haben größere Auswirkungen: Überprüfen Sie das Ziel mit Get-SPOSite, beginnen Sie im kleinen Maßstab und dokumentieren Sie Vorher und Nachher.
# Eine Site sperren, während Sie sie untersuchen oder archivieren
Set-SPOSite -Identity https://<tenant>.sharepoint.com/sites/ProjectX -LockState NoAccess
# Speicherkontingent auf 150 GB erhöhen (Megabyte)
Set-SPOSite -Identity https://<tenant>.sharepoint.com/sites/ProjectX -StorageQuota 153600
# Externe Freigabe einschränken
# Werte: Disabled | ExistingExternalUserSharingOnly | ExternalUserSharingOnly | ExternalUserAndGuestSharing
Set-SPOSite -Identity https://<tenant>.sharepoint.com/sites/ProjectX `
-SharingCapability ExternalUserSharingOnly
Lebenszyklus: Löschen und Wiederherstellen
# Eine Websitesammlung löschen
Remove-SPOSite -Identity https://<tenant>.sharepoint.com/sites/OldProject -Confirm:$true
# Was liegt im Tenant-Papierkorb?
Get-SPODeletedSite -Limit All | Select-Object Url, DeletionTime, DaysRemaining
# Eine Site wiederherstellen
Restore-SPODeletedSite -Identity https://<tenant>.sharepoint.com/sites/OldProject
Gelöschte Sites landen im Tenant-Papierkorb und können wiederhergestellt werden – aber nicht unbegrenzt, und eine neue Site kann keine URL verwenden, die dort noch belegt ist. Get-SPODeletedSite zeigt Ihnen, was wartet.
SharePoint PowerShell-Skripte schreiben, die keinen Schaden anrichten
Ein PowerShell-Skript ist eine einfache Textdatei mit der Erweiterung .ps1. Skripte verwandeln Befehle, die Sie eintippen würden, in etwas Parametrisiertes, Protokolliertes und Wiederholbares – das ist der Unterschied zwischen einer Automatisierung und einem Missgeschick.
Die fünf wichtigen Gewohnheiten
1. Zuerst den Trockenlauf-Modus. Jedes Massen-Skript sollte einen Modus unterstützen, der ausgibt, was es tun würde, ohne etwas zu ändern. Überprüfen Sie diese Ausgabe, bevor Sie auf einen Live-Lauf umschalten.
2. Transcript-Protokollierung. Start-Transcript erfasst jeden Befehl und jede Meldung in einer Datei. Wenn jemand fragt, was sich dienstags um 2 Uhr morgens geändert hat, haben Sie eine Antwort.
3. Wiederholung mit Backoff. SharePoint Online drosselt Anfragen. Rechnen Sie mit HTTP 429 und 503, warten Sie, erhöhen Sie den Backoff exponentiell und wiederholen Sie, anstatt mitten durch 400 Sites abzubrechen.
4. Idempotenz. Schreiben Sie Skripte so, dass ein zweiter Durchlauf harmlos ist. Das Hinzufügen eines Benutzers, der bereits Mitglied ist, sollte kein Fehler sein, sondern ein No-Op.
5. Eingaben vor der Schleife validieren. Prüfen Sie, ob die CSV existiert, ob die Spalten die erwarteten sind, und schlagen Sie laut fehl, bevor Sie etwas berühren.

Bild 5. Aufbau eines sicheren Massen-Änderungs-Skripts.
Ein Skript-Grundgerüst, das Sie anpassen können
[CmdletBinding()]
param(
[Parameter(Mandatory=$true)][string]$AdminUrl, # https://<tenant>-admin.sharepoint.com
[Parameter(Mandatory=$true)][string]$CsvPath,
[ValidateSet('DryRun','Run')][string]$Mode = 'DryRun',
[int]$MaxRetries = 5
)
$stamp = Get-Date -Format 'yyyyMMdd_HHmmss'
$logPath = Join-Path $PSScriptRoot "logs\Run_$stamp.log"
New-Item -ItemType Directory -Force -Path (Split-Path $logPath) | Out-Null
Start-Transcript -Path $logPath -IncludeInvocationHeader
try {
Import-Module Microsoft.Online.SharePoint.PowerShell -ErrorAction Stop
Connect-SPOService -Url $AdminUrl -ErrorAction Stop
if (-not (Test-Path $CsvPath)) { throw "CSV nicht gefunden: $CsvPath" }
$rows = Import-Csv -Path $CsvPath
if (-not $rows) { throw "CSV hat keine Zeilen: $CsvPath" }
foreach ($col in 'SiteUrl','GroupName','UserPrincipalName') {
if ($rows[0].PSObject.Properties.Name -notcontains $col) {
throw "CSV fehlt die erforderliche Spalte: $col"
}
}
# ... Hauptschleife kommt hier ...
}
finally {
Disconnect-SPOService -ErrorAction SilentlyContinue
Stop-Transcript
}
Das vollständige Muster für die Hauptschleife sieht folgendermaßen aus – ein Wiederholungs-Hilfsprogramm um die eigentliche Änderung, mit Zählern und einer Zusammenfassung am Ende:
function Invoke-WithRetry {
param([scriptblock]$Action, [string]$Description = 'operation')
$delay = 2
for ($attempt = 1; $attempt -le $MaxRetries; $attempt++) {
try { return & $Action }
catch {
$msg = $_.Exception.Message
if ($msg -match '429|503|throttl|too many') {
Write-Warning "Gedrosselt bei Versuch $attempt ($Description). Warte $delay s..."
Start-Sleep -Seconds $delay
$delay = [Math]::Min($delay * 2, 60)
continue
}
throw
}
}
throw "Fehlgeschlagen nach $MaxRetries Versuchen: $Description"
}
$success = 0; $skipped = 0; $failed = 0
$i = 0; $total = $rows.Count
foreach ($row in $rows) {
$i++
Write-Progress -Activity "Verarbeite $i von $total" `
-Status "$($row.UserPrincipalName) -> $($row.GroupName)" `
-PercentComplete (($i / $total) * 100)
if ($Mode -eq 'DryRun') {
Write-Output "[DryRun] Würde $($row.UserPrincipalName) zu '$($row.GroupName)' hinzufügen"
$skipped++; continue
}
try {
Invoke-WithRetry -Description "Hinzufügen von $($row.UserPrincipalName)" -Action {
Add-SPOUser -Site $row.SiteUrl -Group $row.GroupName `
-LoginName $row.UserPrincipalName -ErrorAction Stop
} | Out-Null
$success++
Start-Sleep -Milliseconds 200 # schonend vorgehen
}
catch {
if ($_.Exception.Message -match 'already.*member') { $skipped++ }
else { Write-Error "Fehlgeschlagen: $($row.UserPrincipalName)"; $failed++ }
}
}
Write-Host "Erfolgreich: $success Übersprungen: $skipped Fehlgeschlagen: $failed"
Ausführen
Speichern Sie die Datei mit der Erweiterung .ps1. Wenn Windows sie blockiert, weil sie von woanders heruntergeladen wurde, führen Sie Unblock-File .\Add-BulkUsersToGroups.ps1 aus. Führen Sie dann den Trockenlauf durch, lesen Sie die Ausgabe sorgfältig und erst dann den echten Lauf:
# Zuerst Trockenlauf – diese Ausgabe gründlich lesen
.\Add-BulkUsersToGroups.ps1 `
-AdminUrl https://<tenant>-admin.sharepoint.com `
-CsvPath .\users.csv `
-Mode DryRun
# Dann für den echten Lauf
.\Add-BulkUsersToGroups.ps1 `
-AdminUrl https://<tenant>-admin.sharepoint.com `
-CsvPath .\users.csv `
-Mode Run
Online vs. lokal
Das Skript-Muster ist dasselbe; Verbindung und Risiken unterscheiden sich. Online verbinden Sie sich mit der Admin-URL und müssen mit Drosselung rechnen. Lokal führen Sie die SharePoint Management Shell auf einem Farm-Server aus, das Snap-In lädt automatisch, es gibt keine Admin-URL zur Verbindung und Sie verwenden Farm-Cmdlets wie New-SPSite und Set-SPSite. Drosselung ist kein Faktor, aber Serverressourcen sind es – Massen-Jobs entsprechend dosieren.
Was sind SharePoint PowerShell-Befehle? Es sind Cmdlets – Verb-Substantiv-Befehle –, die von der SharePoint Online Management Shell bereitgestellt werden. Häufige Beispiele sind
Get-SPOSitezum Auflisten von Sites,New-SPOSitezum Erstellen einer Site,Set-SPOSitezum Ändern von Einstellungen,Add-SPOUserundSet-SPOUserfür den Zugriff sowieRemove-SPOSiteoderRestore-SPODeletedSitefür Lebenszyklusaufgaben.
SharePoint Online Management Shell vs. PnP PowerShell
PnP PowerShell begann als Microsoft 365 Patterns and Practices-Community-Projekt und wird aktiv von Microsoft unterstützt. Es entwickelt sich schnell weiter, deckt weit mehr von Microsoft 365 als nur SharePoint ab und bietet jetzt über 700 Cmdlets für Windows, macOS und Linux.
Das SPO-Modul ist Microsofts offizielles, nur unter Windows lauffähiges Admin-Modul für Tenant- und Websitesammlungseinstellungen. Es ist enger gefasst, konservativer und entspricht eng dem SharePoint Admin Center.
| Kriterium | SharePoint Online Management Shell | PnP PowerShell |
|---|---|---|
| Hauptbereich | Tenant- und Websitesammlungsverwaltung für SharePoint Online | SharePoint-Sites und -Inhalte sowie Teams, Planner, Entra, Purview und Search |
| Typische Aufgaben | Tenant-Richtlinien, Kontingente, Freigabe, Sperrung, Benutzerzugriff, Governance-Berichte | Bereitstellung, Listen und Bibliotheken, Seiten, Vorlagen, Inhaltsverschiebungen, dienstübergreifende Automatisierung |
| Cmdlet-Anzahl | Rund 300 | Über 700 |
| Plattform | Nur Windows | Windows, macOS, Linux |
| PowerShell-Version | Windows PowerShell 5.1 oder PS7 über -UseWindowsPowerShell | PowerShell 7.4 oder höher |
| Authentifizierung | Interaktiv, Systembrowser, zertifikatbasierte App-only, verwaltete Identität | Interaktiv, Gerätecode, Zertifikat, verwaltete Identität – eigene Entra-App erforderlich |
| Updaterhythmus | Monatlich, konservativ | Häufig, mit nächtlichen Vorabversionen |
| Supportmodell | Microsoft-Produktsupport | Open Source, von Microsoft unterstützt, von der Community gepflegt |
| Am besten für | SharePoint-Administratoren, die Tenant- und Site-Einstellungen konfigurieren | DevOps-Ingenieure und Admins, die Inhalte und Multi-Service-Szenarien automatisieren |
Abb. 5. SharePoint Online Management Shell im Vergleich mit PnP PowerShell.

Bild 6. Gegenüberstellung – Bereich, Plattform, Updaterhythmus und Supportmodell.
Praktische Empfehlungen
- Tenant-Standards festlegen, externe Freigabe anpassen, Site-Inventare prüfen oder mit Governance-Funktionen wie Data Access Governance arbeiten → SPO-Modul.
- Sites bereitstellen, Listen- und Bibliotheks-Änderungen skripten, Seiten bearbeiten oder Teams und Planner zusammen mit SharePoint orchestrieren → PnP PowerShell.
- Unter macOS oder Linux oder in einer CI/CD-Pipeline → PnP PowerShell oder CLI für Microsoft 365, mit einem Windows-Runner für SPO-exklusive Lücken.
Für die meisten Organisationen lautet die Antwort: beides – SPO für die Basis-Governance, PnP für alles unterhalb der Tenant-Ebene.
Was ist der Unterschied zwischen SharePoint Online Management Shell und PnP PowerShell? Die SharePoint Online Management Shell ist Microsofts offizielles, nur unter Windows lauffähiges Modul für die Tenant- und Websitesammlungsverwaltung. PnP PowerShell ist das plattformübergreifende, community-getriebene Modul mit deutlich mehr Cmdlets für Inhalte, Listen, Seiten, Bereitstellung und dienstübergreifende Automatisierung. Die meisten Admins verwenden beide.
Wann Sie es nicht skripten sollten: Virto-Apps für SharePoint
PowerShell ist das richtige Werkzeug für maßgeschneiderte, einmalige oder sehr umfangreiche Änderungen. Es ist ein schlechtes Werkzeug für wiederkehrende Betriebsaufgaben, die jemand anderes außer Ihnen ausführen muss, denn jedes Skript wird zu etwas, das Sie besitzen, warten und bei Problemen haftbar machen, wenn Microsoft einen Endpunkt ändert.
Für eine Reihe gängiger SharePoint-Aufgaben ersetzen die Virto-Apps für SharePoint ein Skript durch eine konfigurierte App – gleiches Ergebnis, kein Code zu pflegen und eine Oberfläche, die ein Betriebskollege nutzen kann, ohne PowerShell zu kennen. Jedes Virto-Produkt wird mit einer 30-tägigen kostenlosen Testversion geliefert.

Bild 7. Konfiguration einer Alert-Regel in einer Virto Alerts App statt ein Benachrichtigungs-Skript zu schreiben.
Alerts und Erinnerungen statt eines Watcher-Skripts
Natives SharePoint „Benachrichtigen Sie mich" wurde im Juli 2026 vollständig eingestellt, was viele Admins dazu veranlasste, Power Automate-Flows oder Skripte als Ersatz zu schreiben. Die Skript-Variante bedeutet: Listen abfragen, verfolgen, was bereits gesendet wurde, und Fehler behandeln.
- Virto Alerts & Reminders App (Microsoft 365) – bedingungsbasierte Alerts bei SharePoint-Listen- und Kalenderänderungen, datumsgesteuerte Erinnerungen, flexible Planung, HTML-Vorlagen und Targeting nach Benutzer oder Gruppe. Entscheidend: Es unterstützt Digest-E-Mails, was native Regeln nicht können.
- Virto Notifications & Alerts Web Part (lokal) – das Äquivalent für SharePoint 2013 bis Subscription Edition, mit E-Mail- und SMS-Zustellung.
Massen-Dateioperationen statt eines CSOM-Skripts
Das Hochladen, Verschieben, Kopieren oder Massenbearbeiten von Metadaten über Tausende von Dateien ist ein klassischer Grund, ein Skript zu schreiben – und ein klassischer Grund, es zu bereuen.
- Virto Multiple File Operations (lokal) und Virto Multiple Operations (Microsoft 365) – Drag-and-Drop-Upload, Massen-Download, Löschen, Kopieren, Verschieben, Einchecken, Genehmigen und gleichzeitiges Bearbeiten mehrerer Metadatenfelder über die SharePoint-Oberfläche.
Workflow-Automatisierung statt gepflegter Skripte
- Virto Workflow Automation für SharePoint lokal – über 70 vorgefertigte Aktivitäten für Genehmigungen, Dokumentenverwaltung, Nachrichten und SharePoint-spezifische Aktionen, visuell zusammengestellt. Unterstützt SharePoint 2016, 2019 und Subscription Edition. Hinweis: Dies ist nur für lokale Installationen; Microsoft 365-Kunden sollten für entsprechende Aufgaben Power Automate verwenden.
Kalender-Aggregation statt Feed-Zusammenführung
- Virto Calendar App (Microsoft 365 und Teams) – überlagert beliebig viele Microsoft 365- und Web-Kalender in einer farbcodierten Ansicht und kann als persönliche App in Teams, Outlook und der Microsoft 365-App angeheftet werden.
- Virto Calendar Web Part (lokal) – aggregiert SharePoint-Listen, Exchange-, Google-, SQL- und XML-Quellen in einer einzigen Ansicht.

Bild 8. Virto Calendar App in Teams
Die ehrliche Einschätzung
Diese Apps ersetzen nicht Ihre Governance-Automatisierung. Tenant-Richtlinien, flächendeckende Audits und skriptbasierte Bereitstellung bleiben in PowerShell, wo sie hingehören. Was die Apps von Ihrer Tagesordnung nehmen, ist die repetitive Betriebsschicht – Alerts, Massen-Dateioperationen, Kalenderansichten –, damit die Skripte, die Sie warten, auch tatsächlich der Wartung bedürfen.
Best Practices für SharePoint PowerShell
Ein dediziertes Administratorkonto verwenden
Führen Sie Tenant-Operationen nicht von Ihrem Alltagskonto aus. Erstellen Sie ein separates Administratorkonto mit nur den erforderlichen Rollen – möglichst SharePoint-Administrator statt globalem Administrator –, schützen Sie es mit MFA und bedingtem Zugriff und freuen Sie sich über Audit-Protokolle, die administrative Aktionen klar von persönlicher Aktivität trennen.
Noch besser: Verwenden Sie für alles Geplante die zertifikatbasierte App-only-Authentifizierung oder eine verwaltete Identität, damit überhaupt kein interaktives Konto im Spiel ist.
In einem Nicht-Produktions-Tenant testen
Beginnen Sie mit einer Handvoll Objekten, überprüfen Sie das Transcript und skalieren Sie dann. Validieren Sie mit Get-* vor jedem Set-*. Exportieren Sie für Massenläufe zuerst einen Ausgangszustand:
Get-SPOSite -Limit All |
Select-Object Url, Owner, Template, StorageQuota, SharingCapability, LockState |
Export-Csv .\baseline_$(Get-Date -f yyyyMMdd).csv -NoTypeInformation
Skripte wie Produktcode behandeln
Halten Sie sie in Git mit Commit-Nachrichten und Review-Prozess. Kommentieren Sie die Absicht, nicht die Syntax. Führen Sie eine kurze interne Referenz: was jedes Skript tut, wann man es verwendet, welche Parameter es benötigt und was es beschädigen kann. Fügen Sie eine README mit Beispielen hinzu.
Sicherheit einbauen
Parameter mit [ValidateSet('DryRun','Run')]. Transcript-Protokollierung. Eingabevalidierung vor der Schleife. try/catch um jeden Aufruf, der den Dienst berührt. Write-Progress damit lange Jobs nicht still sind. -Confirm:$true bei destruktiven Aktionen. Eine saubere Zusammenfassung am Ende: Erfolge, Übersprungene, Fehler, Protokollpfad.
Die Pre-Flight-Checkliste
| Prüfung | Warum es wichtig ist |
|---|---|
| In Entwicklungs- oder Staging-Umgebung mit einer kleinen Stichprobe getestet | Erkennt Logikfehler, solange der Schadensradius noch klein ist |
| Ausgangszustand als CSV exportiert | Erlaubt es nachzuweisen, wie der Zustand war, und gezielt zurückzusetzen |
| Trockenlauf-Ausgabe Zeile für Zeile überprüft | Die wirksamste Sicherheitsmaßnahme überhaupt |
| Transcript-Protokollierung aktiviert | Gibt Ihnen einen Audit-Trail ohne zusätzlichen Aufwand |
| Wiederholung und Backoff für 429 und 503 vorhanden | Verhindert, dass ein gedrosselter Lauf auf halbem Weg fehlschlägt |
| Umfang mit einem Get-*-Cmdlet bestätigt | Bestätigt, dass der Filter das auswählt, was Sie denken |
| Rollback- oder Behebungsplan schriftlich festgehalten | Verwandelt einen Vorfall in eine bloße Unannehmlichkeit |
| Änderungsfenster mit Stakeholdern abgestimmt | Massen-Freigabe- und Sperränderungen sind für Benutzer sofort sichtbar |
Abb. 6. Pre-Flight-Checkliste vor einer Massen-Änderung.
Häufige Fehler beheben
| Symptom | Wahrscheinliche Ursache | Lösung |
|---|---|---|
| Das Modul lässt sich überhaupt nicht laden | SharePoint Client Components SDK auf derselben Maschine installiert | Client Components SDK deinstallieren |
| „Keine Verbindung zu SharePoint Online möglich" | Legacy-Authentifizierungspfad oder bedingter Zugriff blockiert den eingebetteten Dialog | -UseSystemBrowser $true oder -ModernAuth $true mit -AuthenticationUrl hinzufügen |
| Cmdlet nicht erkannt in PowerShell 7 | Modul nicht über die Kompatibilitätsschicht importiert | Import-Module Microsoft.Online.SharePoint.PowerShell -UseWindowsPowerShell |
| Zugriff bei jedem Cmdlet verweigert | Konto hat keine SharePoint-Administratorrolle | Rolle im Microsoft 365 Admin Center zuweisen und neu verbinden |
| HTTP 429 oder 503 mitten in einem Massen-Lauf | SharePoint Online-Drosselung | Wiederholung mit exponentiellem Backoff, Verzögerungen hinzufügen, außerhalb der Spitzenzeiten ausführen, Batch aufteilen |
New-SPOSite schlägt mit ungültigem Vorlagenfehler fehl | Ungültiger Vorlagenname | SITEPAGEPUBLISHING#0 für Kommunikationssite, STS#3 für nicht gruppenbezogene Teamsite verwenden |
New-SPOSite schlägt fehl, weil URL bereits in Verwendung | Eine gelöschte Site mit dieser URL liegt noch im Tenant-Papierkorb | Get-SPODeletedSite prüfen, dann entfernen oder wiederherstellen |
Ein zweites Connect-SPOService ändert den Kontext stillschweigend | Pro Sitzung und geografischem Bereich wird nur eine SPO-Verbindung unterstützt | Disconnect-SPOService zwischen Tenants oder separate Sitzungen verwenden |
| Alte PnP-Skripte können sich nicht mehr authentifizieren | Die gemeinsame PnP Management Shell-Entra-App wurde im September 2024 gelöscht | Eigene Entra ID-App registrieren und deren -ClientId übergeben |
Abb. 7. Häufige SharePoint Online PowerShell-Fehler und ihre üblichen Ursachen.
FAQ
Wie prüfe ich, welche Version der SharePoint Online Management Shell ich habe?
Führen Sie Get-Module Microsoft.Online.SharePoint.PowerShell -ListAvailable | Select-Object Name, Version, Path aus. Falls es aus der Gallery installiert wurde, funktioniert auch Get-InstalledModule Microsoft.Online.SharePoint.PowerShell. Wenn nichts zurückgegeben wird, ist es auf dieser Maschine nicht installiert.
Funktioniert die SharePoint Online Management Shell mit PowerShell 7?
Ja, aber nicht nativ. Importieren Sie sie mit Import-Module Microsoft.Online.SharePoint.PowerShell -UseWindowsPowerShell, wodurch sie in einem Windows PowerShell-Hintergrundprozess ausgeführt wird. Für intensive Automatisierung verwenden Sie direkt Windows PowerShell 5.1.
Kann ich SharePoint PowerShell unter macOS oder Linux ausführen?
Nicht das SPO-Modul – es ist nur für Windows. Verwenden Sie stattdessen PnP PowerShell (PowerShell 7.4+) oder die CLI für Microsoft 365 und greifen Sie für die wenigen SPO-exklusiven Cmdlets auf eine Windows-VM oder Azure Automation zurück.
Gibt es ein Disconnect-SPOService-Cmdlet?
Ja. Disconnect-SPOService beendet die Verbindung explizit. Ältere Anleitungen, die das Gegenteil behaupten, sind veraltet. Bereits laufende Operationen werden noch abgeschlossen.
Wie führe ich SharePoint Online-Cmdlets aus, ohne dass sich ein Benutzer anmeldet?
Registrieren Sie eine Entra ID-Anwendung, gewähren Sie ihr SharePoint-Anwendungsberechtigungen, laden Sie ein Zertifikat hoch und verbinden Sie sich mit -ClientId, -TenantId und -CertificateThumbprint. In Azure ist -ManagedIdentity noch einfacher.
Welche Berechtigungen benötige ich?
Die SharePoint-Administratorrolle in Microsoft 365. Der globale Administrator funktioniert ebenfalls, verfügt aber über mehr Berechtigungen als für die Aufgabe erforderlich. Die SharePoint Embedded Administrator-Rolle kann für containerbezogene Cmdlets eine Verbindung herstellen.
Warum schlägt New-SPOSite mit einem Fehler wegen ungültiger Vorlage fehl?
Fast immer liegt es am Vorlagennamen. Eine Kommunikationssite ist SITEPAGEPUBLISHING#0; eine nicht gruppenbezogene Teamsite ist STS#3. COMMUNICATIONSITE#0 ist kein gültiger Wert, obwohl er online weit verbreitet erscheint. Gruppenbezogene Teamsites werden mit diesem Cmdlet überhaupt nicht erstellt.
Wie vermeide ich Drosselung bei großen Jobs?
Fügen Sie eine Wiederholung mit exponentiellem Backoff für HTTP 429 und 503 ein, bauen Sie kleine Verzögerungen zwischen Operationen ein, führen Sie Massen-Jobs außerhalb der Spitzenzeiten aus und teilen Sie sehr große Batches auf. Get-SPOSite -Limit All in einem großen Tenant birgt selbst ein Drosselungsrisiko – paginieren Sie.
Sollte ich das SharePoint Admin Center oder PowerShell verwenden?
Das Admin Center für einmalige Änderungen und für alles, was Sie erst nachschlagen müssten. PowerShell, wenn dieselbe Änderung auf viele Objekte angewendet werden muss, wenn Sie einen Nachweis der Änderungen benötigen oder wenn es geplant ausgeführt werden muss.
Brauche ich PnP PowerShell noch, jetzt wo das SPO-Modul App-only-Auth unterstützt?
Ja, wenn Sie unterhalb der Tenant-Ebene arbeiten. Das SPO-Modul kann immer noch keine Listen, Bibliotheken, Seiten oder Inhalte verwalten – das bleibt das Territorium von PnP, zusammen mit allem Dienstübergreifenden.
Fazit
Die SharePoint Online Management Shell ist das offizielle PowerShell-Modul zur Verwaltung von SharePoint Online auf Tenant- und Websitesammlungsebene. Es bietet einen konsistenten Befehlssatz für Richtlinien, Bereitstellung, Zugriffsverwaltung, Berichterstattung und Massenoperationen – Aufgaben, die im Browser langsam oder unmöglich sind.
Im Jahr 2026 ist es ein besseres Werkzeug als früher: Zertifikat- und verwaltete Identitäts-Authentifizierung machen unbeaufsichtigte Automatisierung sauber, und die Governance-Oberfläche ist gewachsen und umfasst jetzt Datenzugriffseinblicke, eingeschränkte Zugriffssteuerung, Archivierung und Agent-Zugriffsberichte. Es ist nach wie vor nur für Windows, und Mac-Admins sollten von Anfang an PnP PowerShell einplanen.
Behalten Sie PowerShell für das Komplexe und Großvolumige. Für die repetitive Betriebsschicht – Alerts, Massen-Dateioperationen, Kalenderansichten, lokale Workflows – bieten die Virto-Apps für SharePoint eine konfigurierte Alternative mit einer 30-tägigen kostenlosen Testversion, die ein Kollege ohne Konsolenerfahrung bedienen kann.
Wenn Sie ein konkretes Szenario besprechen möchten, buchen Sie eine kurze Demo.
Weiterführende Literatur
- Einführung in die SharePoint Online Management Shell – Microsoft Learn
- Erste Schritte mit der SharePoint Online Management Shell – Installieren und verbinden
- Referenz zum Modul Microsoft.Online.SharePoint.PowerShell – vollständiger Cmdlet-Index
- Connect-SPOService-Referenz – alle Authentifizierungsoptionen
- SharePoint Online Management Shell herunterladen – Microsoft Download Center
- PnP PowerShell-Dokumentation – Installation, Cmdlets und Anleitungen
- Entra ID-Anwendung für PnP PowerShell registrieren – erforderlich seit September 2024
- CLI für Microsoft 365 – die plattformübergreifende Alternative