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](/img/powershell-homepage.png)
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:
-
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
-
Starte das MSI-Paket auf Deinem Computer und folge den Anweisungen.
PowerShell ist nun installiert, wir können einen ersten Test machen:
-
Tippe im Suchfeld der Windows-Taskleiste
powershell 7
ein und bestätige mit der Eingabetaste, um PowerShell 7 zu öffnen.PowerShell 7 starten
-
Tippe nun
$PSVersionTable
ein und bestätige mit der Eingabetaste. Du solltest nun folgende Ausgabe sehen: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](/img/powershell-windows-update.png)
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.
-
Schließe die PowerShell 7.
-
Lade Dir wie gewohnt das neueste Windows-Setup für PowerShell 7 herunter und starte es.
-
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 Gallery
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:
-
Starte die die PowerShell 7.
-
Tippe
Install-Module <Name des Moduls>
ein und bestätige mit der Eingabetaste. -
Du wirst jetzt gefragt, ob Du der PowerShell Gallery (PSGallery) vertrauen möchtest.
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:
-
Starte die die PowerShell 7.
-
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:
-
Lade die aktuelle Windows-Version von Visual Studio Code herunter.
-
Starte das Setup auf Deinem Computer und folge den Anweisungen.
-
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.
-
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
-
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