Home> Blog> Task management> SharePoint Online Management Shell: Einrichtung & Leitfaden 2026

SharePoint Online Management Shell: Einrichtung & Leitfaden 2026

Sergi Sinyugin by Sergi Sinyugin Published: Aug 26, 2026 Latest update: Aug. 26, 2026
Reading Time: 28 mins
Task management

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.PowerShell und stellen Sie die Verbindung her mit Connect-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:

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:

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üherJetzt (August 2026)
Unbeaufsichtigte Jobs benötigten PnP PowerShell oder gespeicherte AnmeldedatenConnect-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-AppDiese App wurde am 9. September 2024 gelöscht. Sie müssen Ihre eigene Entra ID-Anwendung registrieren
PnP PowerShell lief unter Windows PowerShell 5.1PnP PowerShell v3 erfordert PowerShell 7.4 oder höher auf allen Plattformen
Nur SharePoint-Administrator und globaler Administrator konnten eine Verbindung herstellenSharePoint Embedded Administrator kann ebenfalls eine Verbindung herstellen, für die Container-Verwaltung
Ein begrenzter Satz klassischer Site- und Tenant-CmdletsRund 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 ZieleBeide 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.

SharePoint Online Management Shell overview August 2026

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:

Choosing between SharePoint PowerShell modules

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.

SzenarioVerwenden SieVerbindungsartPlattform
Tenant-Richtlinien, Kontingente, Freigaberegeln, Site-Inventar, Governance-BerichteSharePoint Online Management ShellConnect-SPOService -Url https://<tenant>-admin.sharepoint.comNur Windows
Server, Datenbanken, Dienstanwendungen auf einer lokalen FarmSharePoint Server Management Shell„SharePoint Management Shell" auf dem Server öffnenWindows Server
Sites, Listen, Bibliotheken, Seiten; dienstübergreifende Flows (Teams, Planner, Entra)PnP PowerShellConnect-PnPOnline -Interactive -ClientId <your app>Windows, macOS, Linux (PS 7.4+)
Microsoft 365 über bash oder zsh verwalten oder aus einer Nicht-PowerShell-PipelineCLI für Microsoft 365m365 loginJede Plattform mit Node.js
Routinemäßige Betriebsaufgaben – Alerts, Massen-Dateioperationen, Kalender, WorkflowsVirto-Apps für SharePointIn der SharePoint- oder Teams-Oberfläche konfigurierenBrowser

Abb. 2. Welches SharePoint PowerShell-Tool für welchen Zweck geeignet ist.

So installieren Sie die SharePoint Online Management Shell unter Windows

Voraussetzungen

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.

Four ways for Mac admins to manage SharePoint Online

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.

AufgabeSPO-Modul (Windows)PnP PowerShell (jedes OS)
Sites auflistenGet-SPOSite -Limit AllGet-PnPTenantSite
Eine Site erstellenNew-SPOSiteNew-PnPSite -Type CommunicationSite
Site-Einstellungen ändernSet-SPOSiteSet-PnPTenantSite
Benutzer zu einer Site-Gruppe hinzufügenAdd-SPOUserAdd-PnPGroupMember
Tenant-weite EinstellungenSet-SPOTenantSet-PnPTenant
Site löschen / wiederherstellenRemove-SPOSite / Restore-SPODeletedSiteRemove-PnPTenantSite / Restore-PnPTenantRecycleBinItem
Mit Listen, Dateien, Seiten arbeitenNicht unterstütztGet-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.com aus. Melden Sie sich dann mit einem SharePoint-Administratorkonto an. Für unbeaufsichtigte Skripte verwenden Sie die zertifikatbasierte App-only-Authentifizierung mit -ClientId, -TenantId und -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

BereichCmdletTypische VerwendungBeispiel
SitesGet-SPOSiteSites inventarisieren und filternGet-SPOSite -Limit 50
SitesNew-SPOSiteEine Websitesammlung erstellenNew-SPOSite -Url ... -Template SITEPAGEPUBLISHING#0
SitesSet-SPOSiteKontingent, Freigabe, Sperrzustand ändernSet-SPOSite -Identity ... -LockState NoAccess
BenutzerGet-SPOUserPrüfen, wer Zugriff auf eine Site hatGet-SPOUser -Site ...
BenutzerAdd-SPOUserEinen Benutzer zu einer Site-Gruppe hinzufügenAdd-SPOUser -Site ... -Group "Members" -LoginName ...
BenutzerSet-SPOUserSite-Sammlungsadministrator umschaltenSet-SPOUser -IsSiteCollectionAdmin $true
TenantGet-SPOTenantTenant-weite Konfiguration lesen`Get-SPOTenant
TenantSet-SPOTenantStandard-Linktypen, Features, SpeicherSet-SPOTenant -DefaultSharingLinkType Internal
LebenszyklusRemove-SPOSiteEine Websitesammlung löschenRemove-SPOSite -Identity ... -Confirm:$true
LebenszyklusGet-SPODeletedSiteDen Tenant-Papierkorb einsehenGet-SPODeletedSite -Limit All
LebenszyklusRestore-SPODeletedSiteEine gelöschte Site wiederherstellenRestore-SPODeletedSite -Identity ...
GovernanceGet-SPODataAccessGovernanceInsightBerichte zu übermäßiger Freigabe und ZugriffGet-SPODataAccessGovernanceInsight -ReportEntity SharingLinks_Anyone
GovernanceSet-SPOSiteArchiveStateEine Site archivieren oder reaktivierenSet-SPOSiteArchiveState -Identity ... -ArchiveState Archived

Abb. 4. Kurzübersicht der wichtigsten SPO-Cmdlets.

The SPO cmdlets you will use most often

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.

Anatomy of a safe bulk-change script

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-SPOSite zum Auflisten von Sites, New-SPOSite zum Erstellen einer Site, Set-SPOSite zum Ändern von Einstellungen, Add-SPOUser und Set-SPOUser für den Zugriff sowie Remove-SPOSite oder Restore-SPODeletedSite fü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.

KriteriumSharePoint Online Management ShellPnP PowerShell
HauptbereichTenant- und Websitesammlungsverwaltung für SharePoint OnlineSharePoint-Sites und -Inhalte sowie Teams, Planner, Entra, Purview und Search
Typische AufgabenTenant-Richtlinien, Kontingente, Freigabe, Sperrung, Benutzerzugriff, Governance-BerichteBereitstellung, Listen und Bibliotheken, Seiten, Vorlagen, Inhaltsverschiebungen, dienstübergreifende Automatisierung
Cmdlet-AnzahlRund 300Über 700
PlattformNur WindowsWindows, macOS, Linux
PowerShell-VersionWindows PowerShell 5.1 oder PS7 über -UseWindowsPowerShellPowerShell 7.4 oder höher
AuthentifizierungInteraktiv, Systembrowser, zertifikatbasierte App-only, verwaltete IdentitätInteraktiv, Gerätecode, Zertifikat, verwaltete Identität – eigene Entra-App erforderlich
UpdaterhythmusMonatlich, konservativHäufig, mit nächtlichen Vorabversionen
SupportmodellMicrosoft-ProduktsupportOpen Source, von Microsoft unterstützt, von der Community gepflegt
Am besten fürSharePoint-Administratoren, die Tenant- und Site-Einstellungen konfigurierenDevOps-Ingenieure und Admins, die Inhalte und Multi-Service-Szenarien automatisieren

Abb. 5. SharePoint Online Management Shell im Vergleich mit PnP PowerShell.

Side by side scope platform cadence and support model

Bild 6. Gegenüberstellung – Bereich, Plattform, Updaterhythmus und Supportmodell.

Praktische Empfehlungen

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.

Configuring an alert rule in Virto Alerts App

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.

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.

Workflow-Automatisierung statt gepflegter Skripte

Kalender-Aggregation statt Feed-Zusammenführung

Virto Calendar App in Teams

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üfungWarum es wichtig ist
In Entwicklungs- oder Staging-Umgebung mit einer kleinen Stichprobe getestetErkennt Logikfehler, solange der Schadensradius noch klein ist
Ausgangszustand als CSV exportiertErlaubt es nachzuweisen, wie der Zustand war, und gezielt zurückzusetzen
Trockenlauf-Ausgabe Zeile für Zeile überprüftDie wirksamste Sicherheitsmaßnahme überhaupt
Transcript-Protokollierung aktiviertGibt Ihnen einen Audit-Trail ohne zusätzlichen Aufwand
Wiederholung und Backoff für 429 und 503 vorhandenVerhindert, dass ein gedrosselter Lauf auf halbem Weg fehlschlägt
Umfang mit einem Get-*-Cmdlet bestätigtBestätigt, dass der Filter das auswählt, was Sie denken
Rollback- oder Behebungsplan schriftlich festgehaltenVerwandelt einen Vorfall in eine bloße Unannehmlichkeit
Änderungsfenster mit Stakeholdern abgestimmtMassen-Freigabe- und Sperränderungen sind für Benutzer sofort sichtbar

Abb. 6. Pre-Flight-Checkliste vor einer Massen-Änderung.

Häufige Fehler beheben

SymptomWahrscheinliche UrsacheLösung
Das Modul lässt sich überhaupt nicht ladenSharePoint Client Components SDK auf derselben Maschine installiertClient 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 7Modul nicht über die Kompatibilitätsschicht importiertImport-Module Microsoft.Online.SharePoint.PowerShell -UseWindowsPowerShell
Zugriff bei jedem Cmdlet verweigertKonto hat keine SharePoint-AdministratorrolleRolle im Microsoft 365 Admin Center zuweisen und neu verbinden
HTTP 429 oder 503 mitten in einem Massen-LaufSharePoint Online-DrosselungWiederholung mit exponentiellem Backoff, Verzögerungen hinzufügen, außerhalb der Spitzenzeiten ausführen, Batch aufteilen
New-SPOSite schlägt mit ungültigem Vorlagenfehler fehlUngültiger VorlagennameSITEPAGEPUBLISHING#0 für Kommunikationssite, STS#3 für nicht gruppenbezogene Teamsite verwenden
New-SPOSite schlägt fehl, weil URL bereits in VerwendungEine gelöschte Site mit dieser URL liegt noch im Tenant-PapierkorbGet-SPODeletedSite prüfen, dann entfernen oder wiederherstellen
Ein zweites Connect-SPOService ändert den Kontext stillschweigendPro Sitzung und geografischem Bereich wird nur eine SPO-Verbindung unterstütztDisconnect-SPOService zwischen Tenants oder separate Sitzungen verwenden
Alte PnP-Skripte können sich nicht mehr authentifizierenDie gemeinsame PnP Management Shell-Entra-App wurde im September 2024 gelöschtEigene 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