Auch wenn die PowerShell eine nützliche Skriptsprache ist, kann es nerven Funktionen und Skripte zu finden, die in der selbst genutzten PowerShell-Version nicht funktionieren. Entweder weil sie älter oder neuer sind.
Insbesondere unter älteren Betriebssystem wie Windows 7 oder XP könnte eine alte oder gar keine PowerShell installiert sein. In diesem Artikel erfährst wie du schnell herausfindest welche Version der PowerShell installiert ist.
Schnelle Lösung
Auch wenn es einige Befehle gibt um die PowerShell-Version herauszufinden, ist die folgende Befehlsfolge meiner Meinung nach die beste.
Mit dieser erfährt man sowohl die Versionsnummer der Standard-Windows-PowerShell wie auch der Core-Variante (Version 6 oder 7):
1 |
powershell.exe -command "write-host;write-host PowerShell-Versionen;write-host --------------------;write-host Std.-Version: (get-host).Version;if ((pwsh.exe -command "1") -eq "1"){pwsh.exe -command 'write-host Core-Version: (get-host).Version'} else {write-host Core-Version: nicht installiert}" |
Mit Hilfe dieser Abfrage erhält man unabhängig davon, ob man es in der Windows-PowerShell, in der Core-PowerShell oder sogar in der guten alten Kommandozeile eingibt, die Versionsnummern beider Editionen angezeigt:
PowerShell-Versionen
——————–
Std.-Version: 5.1.22000.832
Core-Version: 7.2.6
Ist die Core-Variante nicht installiert sieht es so aus:
PowerShell-Versionen
——————–
Std.-Version: 5.1.22000.832
Core-Version: nicht installiert
Einziges Manko ist derzeit, dass ich noch keinen brauchbaren Weg gefunden habe die Fehlermeldung zu unterdrücken falls die Core-Version nicht installiert ist.
PowerShell-Versions-Chaos
Zuerst einmal ist es wichtig zu wissen, dass es mittlerweile zwei verschiedene „Editionen“ der PowerShell gibt. Die „Desktop“-Variante, bzw. „Windows“-Variante, und die Core-Variante, die plattformübergreifend genutzt werden kann. Wem das nichts sagt, der findet in diesem Artikel mehr Infos zu dieser ominösen Core-Edition (verlinken zu PowerShellCore-Artikel).
Versionsnummer im Ordnernamen
Übrigens konnte man anhand der Ordnerstruktur noch nie wirklich die PowerShell-Version erkennen. Anhand des Ordners, der eine Versionsnummer enthält, könnte man denken es handelt sich um Version 1.0:
Aus irgendeinem Grund hat man bei Microsoft aber gepennt und nie eine Änderung des Ordnernamens durchgeführt. Ich vermute mal wegen irgendwelcher hart-gecodeten Pfade zur Powershell.exe. Es handelt sich um ein gutes Beispiel, warum man Versionsnummern nicht in Datei- oder Ordnernamen aufnehmen sollte. Irgendwann kommt immer der Punkt wo etwas so verstrickt ist, dass man das einfach nicht mehr ändern kann.
Ebenfalls kann man die korrekte Versionsnummer nicht in den Eigenschaften der Exe-Datei sehen:
Bei der neuen PowerShell hat man aber dazu gelernt und es steht tatsächlich die richtige Versionsnummer in den Datei-Eigenschaften:
Für Version 7 findet man die Exe-Datei in diesem Ordner: „C:\Program Files\PowerShell\7“
Welche PowerShell-Version ist in Windows 10/11 enthalten?
Man könnte denken in Windows 10 und Windows 11 sei standardmäßig die aktuellste Version „PowerShell 7“ enthalten.
Stattdessen ist dort grundsätzlich nur die reine Windows-Variante der PowerShell in der letzten veröffentlichten Version 5.1 vorzufinden. Die neue plattformübergreifende Variante muss manuell installiert werden.
Windows-Version | vorinstallierte Powershell |
---|---|
Wíndows 7 | PowerShell Version 2 |
Wíndows 10 | PowerShell Version 5 |
Wíndows 11 | PowerShell Version 5.1 |
Versionsabfragen per PowerShell
Da es über die GUI keinen Weg zu geben scheint die Versionsnummer herauszufinden, zeige ich euch hier die Möglichkeiten mittels Abfragen in der PowerShell selber:
1 |
Get-Host |
Statt des Cmdlets kann man auch einfach eine der zwei folgenden Variablen ausgeben lassen:
1 |
$host |
1 |
$PSVersionTable |
Wichtig: Man bekommt nur die Version der aktuell ausgeführten PowerShell angezeigt. Wenn man also parallel Version 7 (ehemals Core) installiert hat, erfährt man diese Versionsnummer nur wenn man die pwsh.exe ausführt und einen der genannten Befehle dort eingibt.
Falls jemand doch einen Weg kennt wie man die Versionsnummer in Windows vernünftig per GUI herausfinden kann, schreibt es bitte gerne in die Kommentare.