PowerShell & Scripting
PowerShell
Overview
PowerShell ist Microsofts Werkzeug für die Aufgabenautomatisierung und besteht aus drei Teilen: einer interaktiven Shell, einer Skriptsprache und der Konfigurationsverwaltung über Desired State Configuration. Anders als cmd oder Bash gibt PowerShell .NET-Objekte statt Text weiter. Deshalb filterst und sortierst Du Ergebnisse über Eigenschaften, statt Textausgaben zu zerlegen. Befehle (Cmdlets) folgen dem Schema Verb-Substantiv, etwa Get-Process oder Set-Item.
Es gibt zwei Linien: Windows PowerShell 5.1 basiert auf dem .NET Framework, ist Bestandteil von Windows und folgt dem Support-Lebenszyklus des Betriebssystems. PowerShell 7 (früher PowerShell Core) ist Open Source, basiert auf aktuellem .NET und läuft auf Windows, Linux und macOS. Beide lassen sich parallel betreiben: powershell.exe startet Windows PowerShell 5.1, pwsh.exe startet PowerShell 7. Die Weiterentwicklung findet ausschließlich in PowerShell 7 statt.
Aktueller Stand: PowerShell 7.6 ist seit 18. März 2026 allgemein verfügbar, ist ein LTS-Release auf Basis von .NET 10 und wird bis 14. November 2028 unterstützt. Der Support für PowerShell 7.4 (LTS) und 7.5 endet am 10. November 2026. PowerShell 7.7 ist als Preview erhältlich und laut Microsoft nicht für den Produktivbetrieb gedacht.
How it works
PowerShell setzt auf der .NET-Laufzeit auf und verarbeitet Befehle als Objektstrom:
- Der Parser zerlegt die Eingabe oder das Skript (.ps1) in Befehle, Parameter und Ausdrücke.
- PowerShell löst Cmdlets, Funktionen und native Programme auf. Fehlende Module lädt es aus den Pfaden in $Env:PSModulePath automatisch nach.
- Die Ergebnisse wandern als .NET-Objekte durch die Pipeline zum nächsten Befehl.
- Am Ende bereitet das Formatierungssystem die Objekte für die Konsole auf, oder Export-Cmdlets schreiben sie als CSV, JSON oder XML.
Wichtige Unterschiede zu 5.1: PowerShell 7 enthält kein ISE und keinen PowerShell Workflow mehr, die WMI-v1-Cmdlets wie Get-WmiObject sind durch die CIM-Cmdlets ersetzt, und $OutputEncoding steht auf UTF-8 ohne BOM statt ASCII. Module, die zwingend das .NET Framework brauchen, lädst Du mit Import-Module -UseWindowsPowerShell über eine Windows-PowerShell-Hintergrundsitzung.
Benefits
- Objekte statt Text: Du greifst direkt auf Eigenschaften zu, fehleranfälliges Parsen von Textausgaben entfällt
- Ein Werkzeug für viele Systeme: Microsoft liefert Module für Azure, Exchange Online, Microsoft 365 und Windows, Hersteller wie VMware und AWS ebenfalls
- Plattformübergreifend: PowerShell 7 läuft auch unter Linux und macOS, dieselben Skripte funktionieren deshalb in Linux-basierten CI/CD-Pipelines
- Planbarer Support: LTS-Versionen erhalten über mehrere Jahre Sicherheitsupdates, PowerShell 7.6 bis November 2028
Practical example
Ein Maschinenbauer mit 300 Mitarbeitenden betreibt Wartungsskripte unter Windows PowerShell 5.1 und neue Microsoft-365-Skripte unter PowerShell 7.4. Weil der Support für 7.4 am 10. November 2026 endet und das Modul ExchangeOnlineManagement ab Version 3.10 ohnehin PowerShell 7.6 voraussetzt, verteilt die IT PowerShell 7.6 auf Admin-Workstations und Verwaltungsserver. Die Altskripte testet sie mit pwsh.exe, zwei Skripte mit WMI-v1-Aufrufen bleiben vorerst unter 5.1. Ergebnis ist eine einheitliche Version mit Support bis November 2028.
Things to keep in mind
- Für Produktivskripte LTS-Versionen einsetzen: Stable-Releases wie 7.5 enden etwa sechs Monate nach dem nächsten LTS-Release
- Windows PowerShell 5.1 bleibt parallel installiert, geplante Aufgaben und Verknüpfungen mit powershell.exe laufen deshalb weiterhin unter 5.1
- Nach dem Wechsel auf 7.6 die Module prüfen, weil ExchangeOnlineManagement, PnP PowerShell oder Pester eigene Mindestversionen vorgeben
- Preview-Versionen (aktuell 7.7) nur in Testumgebungen nutzen
- Mit einer #Requires-Anweisung im Skriptkopf dokumentieren, welche Version und welche Module ein Skript braucht
Licensing & availability
Windows PowerShell 5.1 ist Bestandteil von Windows und Windows Server und folgt deren Lebenszyklus, eine eigene Lizenz gibt es nicht. PowerShell 7 ist kostenlos und Open Source (MIT-Lizenz) und wird als separates Paket installiert. Support: PowerShell 7.6 LTS bis 14. November 2028, PowerShell 7.4 LTS und 7.5 bis 10. November 2026. Stand: Oktober 2026.
Conclusion
PowerShell ist das Standardwerkzeug für die Automatisierung in Microsoft-Umgebungen. Plane jetzt den Umstieg auf PowerShell 7.6 LTS, weil 7.4 und 7.5 im November 2026 aus dem Support laufen.
Further reading
Related articles
PHscripts.de | PSscripts.de
PowerShell 7: Modules and WPF GUIs - A Practical Guide
Microsoft 365
Microsoft 365 Security Audit with PowerShell, Part 1: Identity and Access
Microsoft 365
M365 Organization Settings via PowerShell
Exchange Online