PowerShell 7.0: Technische Basis und Installation

Der Dotnet-Doktor  –  16 Kommentare

Der Dotnet-Doktor beginnt mit diesem Beitrag eine Blog-Serie zur PowerShell 7.0, der neuen Version der .NET-basierten Shell für Windows, Linux und macOS.

Am 4. März 2020 ist die PowerShell 7.0 erschienen. Ich möchte das zum Anlass für eine kleine Serie von Beiträgen in meinem Blog nehmen. Im ersten Teil geht es um die technische Basis und die Installation der neuen PowerShell.

PowerShell 7.0 basiert auf .NET Core 3.1

Die PowerShell 7.0 ist der Nachfolger der PowerShell Core 6.2 und basiert genau wie die 6.x-Versionen auf .NET Core (s. Abb. 1). Dennoch hat das PowerShell-Entwicklungsteam das "Core" im Namen gestrichen und greift damit schon dem voraus, was bei .NET am Jahresende auch passieren wird: Im November wird .NET 5.0 (ohne Core) als Nachfolger von .NET Core 3.1 erscheinen.

Die "klassische" Windows PowerShell 5.1 basiert auf dem "klassischen" .NET Framework und läuft daher nur auf Windows. Seit Version 6.0 läuft die PowerShell dank .NET Core auch auf Linux und macOS. Eine Zwischenstufe ist die Windows PowerShell Core: Diese Variante ist enthalten in Windows Nano Server.

Die PowerShell-Familie 2020 (Abb. 1)

Während die PowerShell Core 6.0 bis 6.2 auf der zweiten Generation von .NET Core basierte (.NET Core 2.0 bis 2.2), läuft PowerShell 7.0 auf .NET Core 3.1 (s. Abb. 2). Die vorherige Installation der .NET-Core-3.1-Laufzeitumgebung ist jedoch keine Voraussetzung für die PowerShell 7.0, denn sie bringt als eine sogenannte "Self Contained .NET Application" bereits eine solche mit sich. Das führt dazu, dass die PowerShell 7.0 derzeit aus 986 Dateien mit 225 MByte besteht (auf Windows). Unter Ubuntu sind es 558 Dateien mit 153 MByte.

Versionsinformationen in der PowerShell 7.0 (Abb. 2)

Mit keinem Betriebssystem geliefert, aber in Azure installiert

Nach aktuellem Stand wird die PowerShell 7.0 mit keinem Betriebssystem im Standard ausgeliefert. Das ist eine Hürde – insbesondere für Unternehmen, in denen Zusatzinstallationen mit komplexen Prozessen verbunden oder gar verboten sind (z.B. auf Servern). Auch in aktuellen Windows-Versionen ist weiterhin die Windows PowerShell 5.1 enthalten.

Standard ist die PowerShell 7.0 aber bereits in der Azure Cloud Shell im Webportal von Microsofts Cloud-Dienst Azure. Auch auf den Hosted Agents in Azure DevOps hat Microsoft die PowerShell 7.0 bereits vorinstalliert.

PowerShell 7.0 in der Azure Cloud Shell (Abb. 3)

Interessierte Nutzer können die PowerShell 7.0 von der Release-Seite auf GitHub kostenfrei beziehen. Für Windows (ab Windows 7 und Windows Server 2008 R2) gibt es wahlweise ein MSI- oder ZIP-Paket. Verschiedene Installationsoptionen unter Linux (z.B. snapd) erläutert ein Microsoft-Dokument. Eine auf allen Plattformen verfügbare Installationsoption für die PowerShell 7.0 ist die Verwendung des .NET Core SDK, das .NET-Entwickler üblicherweise auf ihrem System haben:

dotnet tool install --global PowerShell

Start der PowerShell 7.0

Die PowerShell 7.0 startet man über pwsh.exe unter Windows beziehungsweise pwsh unter Linux und macOS. Bei der Installation per MSI-Paket unter Windows erhält man einen Startmenüeintrag zu C:\Program Files\PowerShell\7\pwsh.exe und einen Eintrag in die Umgebungsvariable PATH. Wenn man das ZIP-Paket verwendet, ist man selbst verantwortlich für Standort und Integration.

Die PowerShell 7.0 und die Windows PowerShell 1.0 bis 5.1 können auf einem Windows-System koexistieren, da sie unterschiedliche Anwendungsnamen besitzen (powershell.exe für Windows PowerShell und pwsh.exe für PowerShell 7.0).