Tierney - stock.adobe.com
PowerShell 7 unter Windows, macOS und Linux nutzen
Die PowerShell 7 soll künftig Windows PowerShell 5.1 und PowerShell Core 6.x ersetzen und kommt für verschiedene OS-Plattformen. Wir zeigen mit der Vorabversion, was sich ändert.
Die PowerShell 7 steht für Windows, macOS und Linux zur Verfügung. Microsoft stellt für die neue Version der PowerShell Vorabversionen zum Download parat. Die finale LTSC-Version von PowerShell 7 wird derzeit für den Januar 2020 erwartet. In den vorhergehenden PowerShell-7-Versionen erhalten Anwender einen Hinweis, wenn eine neue Version zur Verfügung steht.
Der Nachfolger der PowerShell Core 6.2 kann in Windows parallel zur Windows-PowerShell 5.1 installiert werden, und soll generell PowerShell Core und Windows-PowerShell komplett ersetzen (siehe auch Microsoft: PowerShell 7 kommt für alle Plattformen).
Unter Windows wird die Vorabversion mit dem folgenden Befehl installiert:
iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI -Preview"
Die Installation auf Linux erfolgt mit dem folgenden Befehl:
wget https://aka.ms/install-powershell.sh
sudo bash install-powershell.sh -preview
rm install-powershell.sh
Die neue PowerShell unterstützt die Chain Operators „&&“ und „||“. Dadurch kann festgelegt werden, ob ein bestimmter Befehl ausgeführt wird, wenn der vorhergehende erfolgreich war (&&) oder erfolglos (||).
In Skripten muss vor der Verwendung einer Variablen erst überprüft werden, ob die Variable „$null“ oder ob eine Eigenschaft „$null“ ist. Die neuen bedingten Null-Operatoren machen dies einfacher. Der neue Operator „??“ (null coalescing) entfernt die Notwendigkeit von if-und-else-Anweisungen, wenn der Wert einer Anweisung erhalten bleiben soll.
Das kann aber nicht die Prüfung auf einen booleschen Wert von „true“ oder „false“ ersetzen. Hier wird nur überprüft, ob der zurückgegebene Wert „$null“ ist. Der Operator „??=“ (null conditional assignment) macht es einfach, einer Variablen nur dann einen Wert zuzuweisen, wenn der Variablenwert $null ist.
Das Cmdlet Get-HotFix fragt in Windows ab, welche Patches installiert wurden. Das war bisher in PowerShell Core 6.x nicht möglich. Das Cmdlet steht auch in der Windows PowerShell 5.x zur Verfügung.
Die PowerShell 7 verwenden
Die PowerShell 7 ist der Nachfolger von PowerShell 6.2. Auch auf Linux-Rechnern wird häufig auf die PowerShell gesetzt. Vor allem in macOS und Linux wächst die Verwendung der PowerShell Core an, da über diesen Weg von dort aus auch Windows-Rechner verwaltet werden können. Auf Windows-Rechnern werden derzeit PowerShell Core 6.x und 7 weniger installiert, da hier bereits die Windows-Version installiert ist, allerdings in der alten Version 5.
Seit PowerShell Core 6.1 ist die offene PowerShell mit vielen Windows PowerShell-Modulen kompatibel. Microsoft will mit der Version 7 der PowerShell eine Kompatibilität von über 90 Prozent mit allen Windows-Modulen erreichen, die auch mit der standardmäßigen PowerShell 5.x in Windows verfügbar sind. Eine Liste alle kompatiblen Module kann mit dem folgenden Befehl angezeigt werden:
Get-Module -ListAvailable
Der Befehl funktioniert generell in allen aktuellen Versionen der PowerShell. Um sich die aktuelle Version der PowerShell anzuzeigen, wir der folgende Befehl in der entsprechenden PowerShell-Sitzung verwendet „$PSVersionTable“.
In der PowerShell 7 werden Elemente aus .NET Core 3.0 genutzt. Die finale Version unterstützt alle Funktionen aus .NET Core 3.1. Diese unterstützt einige APIs, die von PowerShell-Modulen benötigt werden, die auf .NET-Framework basieren.
Der Support für PowerShell Core 6.x und PowerShell 7 ändert sich
Derzeit unterliegt die PowerShell Core der Microsoft Modern Lifecycle Policy. Anwender müssen die neueste stabile Version innerhalb von sechs Monaten nach einer neuen Version installieren, um weiter Support zu erhalten.
PowerShell 7 unterliegt dem Lebenszyklus des .NET Core-Supports. Hier wird es also LTS-Versionen (Long Term Servicing) und Nicht-LTS-Releases geben. PowerShell 7 kann parallel zur Windows PowerShell 5.1 in Windows betrieben werden.