PowerShell Grundlagen

Objektorientierte Kommandozeile und Skriptsprache von Microsoft.

Allgemeine Infos

PowerShell ist eine aufgabenbasierte Shell mit Skriptsprache auf .NET-Basis und das zentrale Automatisierungswerkzeug in Microsoft-Umgebungen. Cmdlets folgen konsequent dem Verb-Noun-Schema: Get-Process, Set-Item, New-ADUser, Remove-Mailbox. Was zunächst wie eine Konvention wirkt, ist in der Praxis der entscheidende Vorteil: Wer das Schema kennt, kann Cmdlets in unbekannten Modulen durch Get-Command -Verb Get -Module ExchangeOnlineManagement gezielt auffinden, ohne Dokumentation zu öffnen.

Der fundamentale Unterschied zu klassischen Shells wie CMD oder Bash: PowerShell übergibt in der Pipeline keine Textstrings, sondern .NET-Objekte. Das bedeutet, dass Get-Process | Where-Object {$_.CPU -gt 100} nicht auf Textmuster filtert, sondern auf eine typisierte Eigenschaft des Prozessobjekts zugreift. Parsing-Fehler durch unterschiedliche Ausgabeformate entfallen damit vollständig.

Die Versionslandschaft ist für den praktischen Einsatz relevant:

  • Windows PowerShell 5.1: In Windows integriert, wird nicht mehr weiterentwickelt. Basis für viele ältere Module (Exchange On-Premises, bestimmte Active-Directory-Cmdlets). Läuft ausschließlich auf Windows.
  • PowerShell 7 (Core): Aktiv weiterentwickelt, plattformübergreifend (Windows, Linux, macOS), Open Source (MIT-Lizenz auf GitHub). Parallele Installation zu 5.1 möglich und empfohlen. Nicht alle älteren Module sind mit PS7 kompatibel, insbesondere Exchange-On-Premises-Cmdlets laufen noch auf 5.1.

Für Microsoft-365-Administratoren sind folgende Module tägliche Praxis:

  • ExchangeOnlineManagement: Verbindung zu Exchange Online per Connect-ExchangeOnline, Modern Authentication, MFA-fähig.
  • Microsoft.Graph: Nachfolger der MSOnline- und AzureAD-Module (beide deprecated). Zugriff auf Entra ID, Benutzer, Gruppen, Lizenzen über Microsoft Graph API.
  • Az (Azure PowerShell): Ressourcenverwaltung in Azure, Subscriptions, VMs, Storage, Netzwerk.
  • MicrosoftTeams: Teams-Konfiguration, Richtlinien, Benutzer- und Kanalverwaltung per Cmdlet.

Skripte produktionsreif zu machen bedeutet mehr als funktionierende Logik: Fehlerbehandlung über Try/Catch mit $ErrorActionPreference = 'Stop', strukturiertes Logging per Write-Host oder in Logdateien, Parametrisierung über param()-Blöcke statt hartcodierter Werte und Code-Signing für Skripte in Unternehmensumgebungen mit restriktiver Execution Policy. Wer PowerShell-Skripte ohne diese Grundlagen in Produktion bringt, baut technische Schulden, die sich bei der nächsten Umgebungsänderung rächen.

Kurzbeschreibung

Objektorientierte Kommandozeile und Skriptsprache von Microsoft auf .NET-Basis; zentrales Automatisierungswerkzeug für Windows, M365, Azure und Exchange. PowerShell 7 (Core) plattformübergreifend und aktiv weiterentwickelt.

Weiterführende Links