PowerShell 7: Lohnt sich der Umstieg von Windows PowerShell?
Die nächste große Version des Automatisierungs-Tools bietet Leistungsverbesserungen und zahlreiche neue Funktionen, die viele Administratoren interessieren dürften.
PowerShell hat sich von einem reinen Windows-Werkzeug zu einem plattformübergreifenden Open-Source-Projekt entwickelt, das seit der Veröffentlichung von PowerShell Core auch auf Mac- und Linux-Systemen läuft.
Nun führt Microsoft PowerShell Core und Windows PowerShell in der Version PowerShell 7 zusammen, die am 4. März erscheinen ist.
Neue Funktionen der PowerShell 7 kommen aus .NET Core
Der komplett neue Aufbau von PowerShell Core ist für Windows eine Kehrtwende in Sachen PowerShell. Es gibt viele neue Features und Architekturen, die für die Sprache einen deutlichen Fortschritt bedeuten.
Die Open Source PowerShell läuft auf Grundlage von .NET Core 2.x in PowerShell 6.x und .NET Core 3.1 in PowerShell 7. Das .NET Core Framework ist ebenfalls plattformübergreifend, wodurch PowerShell Core auf den meisten Betriebssystemen ausgeführt werden kann.
Die Umstellung auf das .NET Core Framework bringt mehrere wichtige Änderungen mit sich, darunter:
- Eine erhöhte Ausführungsgeschwindigkeit;
- Unterstützung von Windows-Desktop-Anwendungen mit Windows Presentation Foundation und Windows Forms;
- TLS 1.3-Unterstützung und andere kryptografische Erweiterungen;
- API-Verbesserungen.
PowerShell Core liefert Leistungsoptimierung
Durch die Änderungen am .NET Core wurde die Ausführungsgeschwindigkeit beschleunigt. Mit jeder neuen Version von PowerShell Core gibt es weitere Verbesserungen bei der Funktionsweise der Sprachfunktionen und der integrierten Cmdlets.
Ein einfacher Group-Object-Test zeigt, wie sich die Geschwindigkeit mit jeder neuen Version von PowerShell Core verbessert hat.
Mit einer Geschwindigkeitsverbesserung von fast 73 Prozent zwischen Windows PowerShell 5.1 und PowerShell Core 6.1 beschleunigt sich die Ausführung von komplexem Code deutlich.
Ähnlich wie beim Group-Object-Test können wir durch Sort-Object-Tests feststellen, dass sich die Ausführungsgeschwindigkeit von Windows PowerShell 5.1 zu PowerShell Core 6.1 beinahe verdoppelt hat. Da das Sortieren eine häufige Aufgabe in alltäglichen Anwendungen ist, bedeutet die Verwendung von PowerShell Core eine erhebliche Zeitersparnis im normalen Betrieb.
Lücken in der Cmdlet-Kompatibilität behoben
Das PowerShell-Team begann ab PowerShell Core 6.1 mit der Bereitstellung des Windows Compatibility Packs für .NET Core. Mit dieser zusätzlichen Funktion wurde eines der größten Hindernisse bei der Verbreitung von PowerShell Core aus dem Weg geräumt. Die Fähigkeit, bestimmte Cmdlets auszuführen, die zuvor nur für Windows PowerShell verfügbar waren, bedeutet, dass sich die meisten Skripts und Funktionen nun nahtlos in beiden Umgebungen einsetzen lassen.
PowerShell 7 schließt die Lücke weiter, indem das Windows-Kompatibilitätsmodul direkt in die Core Engine integriert ist.
Neue Funktionen in PowerShell 7
Es gibt fast zu viele neue Funktionen in PowerShell 7, um sie in voller Länge aufzulisten. Einige Höhepunkte sind:
- SSH-basiertes PowerShell-Remoting;
- Erzeugen eines PowerShell-Auftrags durch ein & am Ende der Pipeline;
- Verbesserungen an Web-Cmdlets, wie zum Beispiel Link Header Pagination, SSL-Protokollunterstützung, Multipart- Unterstützung und neue Authentifizierungsmethoden;
- Verwendung von Pfaden mit mehr als 260 Zeichen;
- Markdown Cmdlets;
- Experimentelle Feature-Flags;
- SecureString-Unterstützung für Nicht-Windows-Systeme;
- Verbesserungen vorhandener Cmdlets mit neuen Funktionen und Korrekturen.
Parallele Installation reduziert Risiko
Zu den praktischen Eigenschaften von PowerShell Core gehört, dass es möglich ist, die neue Version zu installieren, ohne die integrierte Windows PowerShell entfernen. Dadurch ist es wesentlich risikoärmer, PowerShell 7 auszuprobieren.
Statt PowerShell mit dem Befehl powershell.exe aufzurufen, verwendet man pwsh.exe – oder unter Linux einfach pwsh. Auf diese Weise können Skripte und Funktionen inkrementell getestet werden, bevor man sie alle verschiebt.
Dies ermöglicht eine schnellere Aktualisierung auf neue Versionen, als auf ein Windows-Update zu warten. Durch die Entkopplung vom Windows-Release-Zyklus und Patch-Updates kann PowerShell Core nun regelmäßig veröffentlicht und aktualisiert werden.
Nachteile von PowerShell Core
Einer der größten Nachteile von PowerShell Core ist der Verlust der Fähigkeit, alle Cmdlets auszuführen, die manch einer von Windows PowerShell noch gewohnt ist. Es gibt immer einige Funktionen, die von PowerShell Core vorerst nicht vollständig repliziert werden können.
Ihre Zahl nimmt jedoch mit jeder Version ab. Dies kann die Umstellung einiger Unternehmen auf PowerShell Core verzögern. Unabhängig davon gibt es keinen zwingenden Grund, an Windows PowerShell festzuhalten, sobald die verbesserte Cmdlet-Unterstützung in PowerShell 7 und den nachfolgenden Versionen verfügbar ist.
Erste Schritte mit der Zukunft von PowerShell
PowerShell Core wird für eine Vielzahl von Plattformen veröffentlicht, sowohl für Linux als auch für Windows. Windows bietet MSI-Pakete, die leicht zu installieren sind, während Linux-Pakete für eine Vielzahl verschiedener Paketplattformen und Repositories verfügbar sind.
Durch einfaches Starten der Shell mit pwsh kann man PowerShell Core ausführen, ohne die aktuelle Umgebung zu beeinträchtigen. Noch besser ist die Möglichkeit, eine Preview-Version der nächsten Iteration von PowerShell zu installieren und pwsh-preview auszuführen, um sie zu testen, bevor sie allgemein verfügbar ist.