PowerShell 7 unter Windows 11

Mit PowerShell lassen sich wunderbar administrative Aufgaben im eigenen Computernetzwerk automatisieren. Dieser Blog-Artikel erklärt die Installation, Konfiguration und das Aktualisieren von PowerShell 7 unter Windows 11. Außerdem werfen wir einen kurzen Blick auf Visual Studio Code als mögliche Entwicklungsumgebung für PowerShell.

Einführung

PowerShell ist eine Software zur Verwaltung, Konfiguration und Automatisierung von Computerystemen. Wesentliche Bestandteile sind ein Kommandozeileninterpreter und eine eigene Skriptsprache. PowerShell 7 ist Open Source und läuft unter Windows, Linux sowie macOS.

Die PowerShell-Homepage

Die PowerShell-Homepage

Die Versionierung von PowerShell kann sehr leicht Verwirrung stiften. Neben PowerShell 7 gibt es nämlich noch die Version Microsoft PowerShell 5.1. Hier eine kurze Einordnung:

  • PowerShell 1.0 erschien 2006, zeitglich mit Windows Vista. Diese Version basiert auf dem damals noch recht neuen .NET Framework. Mit jeder neuen Windows-Version wurde auch eine neue PowerShell-Version veröffentlicht. Zuletzt mit Windows 10 die Version 5.

  • Anfang 2018 erschien unter dem Namen PowerShell Core 6 eine komplette Neuentwicklung der PowerShell, diesmal Open Source und plattformunabhängig. Der Namenszusatz Core bedeutet, dass diese PowerShell-Version auf dem neuen .NET Core Framework basiert.

  • Der Nachfolger von PowerShell Core 6 heißt nun PowerShell 7 (ohne Core im Namen). Während die aktuelle 5er Version jetzt offiziell Microsoft PowerShell 5.1 (mit Microsoft im Namen) heißt.

Wir konzentrieren uns in diesem Blog-Artikel auf PowerShell 7. Diese Version wird aktiv weiterentwickelt. Für Microsoft PowerShell 5.1 wird es zukünftig nur noch Fehlerbehebungen und Sicherheitsupdates geben.

PowerShell 7 installieren

Installation

PowerShell 7 ist nicht Bestandteil von Windows 11, muss also explizit installiert werden. Das geht aber fix:

  1. Lade die aktuelle Windows-Version von PowerShell 7 auf GitHub herunter. In der Regel wird dies das MSI-Paket für Windows 64bit sein (hier z.B. PowerShell-7.3.1-win-x64.msi).

    PowerShell 7 MSI-Paket für Windows 64bit

    PowerShell 7 MSI-Paket für Windows 64bit

  2. Starte das MSI-Paket auf Deinem Computer und folge den Anweisungen.

PowerShell ist nun installiert, wir können einen ersten Test machen:

  1. Tippe im Suchfeld der Windows-Taskleiste powershell 7 ein und bestätige mit der Eingabetaste, um PowerShell 7 zu öffnen.

    PowerShell 7 starten

    PowerShell 7 starten

  2. Tippe nun $PSVersionTable ein und bestätige mit der Eingabetaste. Du solltest nun folgende Ausgabe sehen:

    PowerShell 7 testen

    PowerShell 7 testen

Skriptausführung konfigurieren

Befehle unter PowerShell heißen Commandlets (oder kurz Cmdlets). Ein Cmdlet führt eine bestimmte Aktion aus und liefert in der Regel als Ergebnis ein Objekt zurück, das für das nächste Cmdlet weiterverwendet werden kann.

Eine logische Abfolge von mehreren Cmdlets lässt sich mit Hilfe eines PowerShell-Skripts programmieren. PowerShell-Skripte sind Dateien mit der Dateiendung .ps1.

Standardmäßig ist die Ausführung von PowerShell-Skripten aus Sicherheitsgründen unter Windows 11 nicht erlaubt. Diese Einstellung kannst Du aber je nach Bedarf anpassen.

Starte die PowerShell 7 als Administrator und tippe folgenden Befehl ein:

get-executionpolicy

Dieser Befehl gibt die Ausführungsrichtlinie für Deine PowerShell-Umgebung aus. Folgende Werte sind möglich:

  • AllSigned. Verlangt, dass alle Skripte (egal ob remote oder lokal) elektronisch signiert sind.

  • Bypass. Skript werden in ihrer Ausführung nicht geblockt, es werden auch keine Warnungen oder Bestätigungsaufforderungen angezeigt.

  • RemoteSigned. Verlangt, dass alle Remote-Skripte (also jene, die aus dem Internet heruntergeladen wurden) elektronisch signiert seien müssen. Lokale Skripte können ohne Einschränkungen ausgeführt werden. Dies ist die Standardeinstellung für Windows Server 2019.

  • Restricted. Alle Skripte werden in ihrer Ausführung geblockt. Dies ist die Standardeinstellung für Windows 11.

  • Unrestricted. Skripte werden in ihrer Ausführung nicht geblockt, bei nicht signierten Skripten aus dem Internet wird jedoch eine Bestätigung eingefordert.

In der Regel kann man mit der Ausführungsrichtlinie RemoteSigned gut leben. Um diese einzustellen, tippe folgendes in die PowerShell ein:

Set-ExecutionPolicy RemoteSigned 

Jetzt kannst Du lokale PowerShell-Skripte problemlos starten. Die Dokumentation zum Befehl Set-ExecutionPolicy findest Du hier.

Aber wie startet man ein PowerShell-Skript? Nehmen wir mal an, Du hast ein einfaches Skript namens Hallo.ps1, das Du starten möchtest. Dann musst Du folgendes in die PowerShell eintippen:

.\Hallo.ps1

Ein Skriptaufruf bedarf immer einer Pfadangabe. Das .\ steht für den lokalen Pfad. Die Variante mit absolutem Pfad würde wie folgt aussehen:

c:\Beispiele\Hallo.ps1

Hast Du ein Leerzeichen im Pfad, dann gilt folgende Variante (ja, das & gehört dazu):

& "c:\Meine Beispiele\Hallo.ps1"

Updates einspielen

Seit der Version 7.2 kann PowerShell 7 über das gewohnte Windows Update aktualisiert werden.

PowerShell 7 per Windows-Update aktualisieren

PowerShell 7 per Windows-Update aktualisieren

Allerdings dauert es immer etwas, bis das aktuelle Update dort auch verfügbar ist. Wer nicht warten möchte, kann PowerShell 7 jederzeit auch manuell aktualisieren.

  1. Schließe die PowerShell 7.

  2. Lade Dir wie gewohnt das neueste Windows-Setup für PowerShell 7 herunter und starte es.

  3. Nach Beendigung der Installation kannst Du PowerShell direkt wieder starten.

Noch etwas eleganter geht dies mit diesem PowerShell-Befehl direkt aus der Kommandozeile heraus:

iex "& { $(irm https://aka.ms/install-powershell.ps1) } -UseMSI"

Hierbei wird ein von Microsoft bereitgestelltes PowerShell-Skript ausgeführt, welches für Dich das passende Windows-Setup herunterlädt und startet.

PowerShell liefert von Hause aus bereits zahlreiche Cmdlets mit. Wer möchte, kann aber auch ein wenig in der PowerShell Gallery stöbern, einem öffentlichen Repository für PowerShell-Skripte und -Module, das von Microsoft bereitgestellt wird.

PowerShell-Skripte und -Module? Wo ist da der Unterschied?

Ein PowerShell-Modul erlaubt das Gruppieren von PowerShell-Skripten zu einer Einheit. Ein PowerShell-Modul umfasst nicht nur den Skriptcode, sondern auch alle Abhängigkeiten (z.B. Sprachressourcen, Binärdateien etc.) und dient der Modularisierung und Wiederverwendbarkeit.

Zurück zur PowerShell Gallery. Möchtest Du ein Skript oder ein Modul aus der PowerShell Gallery auf Deinem eigenen Computer nutzen, kannst Du es ganz einfach installieren.

Ein PowerShell-Modul installieren:

  1. Starte die die PowerShell 7.

  2. Tippe Install-Module <Name des Moduls> ein und bestätige mit der Eingabetaste.

  3. Du wirst jetzt gefragt, ob Du der PowerShell Gallery (PSGallery) vertrauen möchtest.

    PowerShell Gallery vertrauen

    Der PowerShell Gallery vertrauen

    Hintergrund der Frage ist die Tatsache, dass eigentlich jeder ein PowerShell-Modul in der PowerShell Gallery hinterlegen kann, also auch jemand, der tendenziell Böses im Sinne hat. Du musst also für Dich entscheiden, ob Du dem Entwickler traust. Allerdings sind PowerShell-Module stets Open-Source, Du kannst den Quellcode also überprüfen.

    Antworte mit Yes und das Modul wird installiert.

Ein PowerShell-Modul wieder deinstallieren:

  1. Starte die die PowerShell 7.

  2. Tippe Uninstall-Module <Name des Moduls> ein und bestätige mit der Eingabetaste.

Das Einbinden von PowerShell-Skripten funktioniert genauso. Hier heißen die Befehle Install-Script und Uninstall-Script.

Visual Studio Code

Möchtest Du eigene PowerShell-Skripte entwickeln und testen, wirst Du schnell feststellen, dass ein einfacher Texteditor nicht wirklich Spaß macht. Besser ist eine Entwicklungsumgebung, mit der Du PowerShell-Skripte bearbeiten, ausführen und debuggen kannst.

Zu empfehlen wäre hier Visual Studio Code, einem freien und offnen Code-Editor von Microsoft. Zusammen mit der offiziellen PowerShell-Erweiterung bekommst Du eine profimäßige Entwicklungsumgebung für PowerShell 7.

Die Installation ist schnell gemacht:

  1. Lade die aktuelle Windows-Version von Visual Studio Code herunter.

  2. Starte das Setup auf Deinem Computer und folge den Anweisungen.

  3. Tippe im Suchfeld der Windows-Taskleiste visual studio code ein und bestätige mit der Eingabetaste, um Visual Studio Code zu starten.

Wir müssen jetzt noch die PowerShell-Erweiterung für Visual Studio Code installieren.

  1. In Visual Studio Code klicke auf der linken Symbolleiste auf das Symbol Extensions und tippe unter Search Extensions in Marketplace das Wort powershell ein.

    PowerShell-Erweiterung für Visual Studio Code

    PowerShell-Erweiterung für Visual Studio Code

  2. Gleich der erste Eintrag ist der richtige. Klicke im Eintrag PowerShell auf die kleine grüne Schaltfläche Install. Die PowerShell-Erweiterung wird jetzt installiert.

Fertig. Du kannst jetzt Deine PowerShell-Skripte öffnen, editieren (der Quelltext wird Dir mit passender Syntaxhervorhebung angezeigt und beim Tippen unterstützt Dich IntelliSense), ausführen (Strg+F5) oder debuggen (F5).

Die offizielle Dokumentation zu Visual Studio Code ist recht ausführlich. Du findest dort auch einige Einführungsvideos. Allerdings alles auf Englisch.

Fazit

Wer sich in der Vergangenheit noch mit guten alten BATCH-Dateien unter Windows rumschlagen musste, der sollte mit der PowerShell seine helle Freude haben. Zusammen mit Visual Studio Code hat man ein mächtiges Entwicklungstoolset an der Hand, mit dem sich der Administrationsalltag signifikant vereinfachen lässt.

Artikelhistorie

  • 02.06.2020
    • Erstveröffentlichung
  • 02.10.2020
    • Neuer Abschnitt zur PowerShell Gallery
    • Ein paar kleinere Textkorrekturen
  • 13.04.2021
    • Aktualisierte Abbildungen
  • 08.01.2023
    • Update auf Windows 11
Das könnte dich auch interessieren:
  1. Windows 11 ohne TPM und SecureBoot
  2. MkDocs unter Windows 11
  3. Systemabbild unter Windows 10
  4. OpenSSH absichern
  5. GitHub + SSH unter Windows 10
Teile diesen Artikel
comments powered by Disqus