Im PowerShell gibt es unzählige Möglichkeiten, dasselbe zu tun (oder etwas Ähnliches). In diesem Blogbeitrag erfahren Sie jede Methode, um Ihre PowerShell-Version auf lokalen und entfernten Computern zu überprüfen. Wir werden sowohl die schlechten Methoden als auch meine empfohlene Methode abdecken.
Es gibt Websites, die verschiedene Möglichkeiten anzeigen, Ihre Powershell-Version zu überprüfen. Aber keine hat eine umfassende Liste aller Methoden zusammengestellt. Das habe ich beschlossen zu ändern.
All diese Methoden sollten sowohl in Windows PowerShell als auch in PowerShell Core funktionieren. Diese Methoden sollten auch in Windows PowerShell Version 1.0 bis hin zu PowerShell 7 funktionieren.
Die Methoden, um die Version von PowerShell herauszufinden, sind folgende:
- Die Eigenschaft
(Get-Host).Version
- Die Eigenschaft
$host.Version
- Die Registry (nur Windows PowerShell)
- Die Eigenschaft
$PSVersionTable.PSVersion
Lassen Sie uns alle Methoden zur Ermittlung der PowerShell-Version von der weniger empfohlenen bis zur empfohlensten Methode durchgehen.
Get-Host
PowerShell hat ein Konzept namens Hosts. Ein Host ist ein Programm, das die PowerShell-Engine hostet. Es ist nicht die PowerShell-Engine selbst. Die PowerShell-Konsole oder ein Code-Editor mit integriertem Terminal sind PowerShell Hosts.
A host can have a version that is completely independent of PowerShell itself. This can be deceiving to many newcomers. Let me show you why.
Wenn Sie (Get-Host).Version
ausführen, sehen Sie, dass es eine Versionsnummer zurückgibt, die wie die Versionsnummer des PowerShell-Engines aussehen könnte. Schein kann trügen.
Hier habe ich Get-Host
unter Windows PowerShell 5.1 ausgeführt und Sie können sehen, dass es mit 5.1.17134.858 zurückkommt. Dies sieht nach einer legitimen Version aus.
Manchmal ist jedoch, wenn Sie Get-Host
in einem integrierten Terminal ausführen, die Version nicht dieselbe. Obwohl normalerweise das Host dieselbe Version des Engines repräsentiert, muss es das nicht zwangsläufig immer tun.
Überprüfen Sie die Powershell-Version über Get-Host auf Remote-Computern
Auch wenn Get-Host
scheint, die gleiche Version zurückzugeben, wenn es auf einem lokalen Computer ausgeführt wird, tut es dies auf Remote-Computern niemals.
Zum Beispiel, lassen Sie uns Get-Host
auf einem entfernten Windows Server 2016-Server über Invoke-Command
ausführen und sehen, was passiert.
Das letzte Mal, als ich nachsah, war es nicht möglich, PowerShell v1 auf Windows Server 2016 auszuführen.
Sich auf Get-Host
zu verlassen, ist rundum eine schlechte Idee.
Überprüfen Sie die Powershell-Version über den Befehl $host.Version
Das Referenzieren von $host.Version
ist ein weiterer Weg, um die Powershell-Version zu überprüfen. Die Variable $host
ist eine automatische Variable, die die gleiche Ausgabe wie Get-Host
zurückgibt.

$host.Version
Es ist nichts Besonderes an dieser Methode. Es ist einfach dasselbe wie das Ausführen von Get-Host
.
$host.Version auf Remote-Computern
Sie werden dasselbe Verhalten über PowerShell Remoting mit $host.Version
sehen wie beim Ausführen von Get-Host
.
Achtung, Will Robinson!
Registrierung
Wenn Sie PowerShell selbst nicht öffnen möchten, können Sie auch die Registrierung überprüfen. Die Version von PowerShell ist unter einem Wert im Registrierungsschlüsselpfad HKLM:\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine
versteckt. Dieser Registrierungsschlüssel hat einen Wert namens PowerShellVersion
, auf den Sie mit Get-ItemProperty
verweisen können.
Sie können sehen, dass diese Version ähnlich ist, aber die Überarbeitung nicht wie die anderen Optionen enthält.
Verwendung anderer Werkzeuge
Die Verwendung der Registrierung bedeutet auch, dass Sie PowerShell überhaupt nicht verwenden müssen, um die Version zu finden. Sie können Befehle von der Eingabeaufforderung oder einem anderen Tool ausführen, das die Registrierung lesen kann.
Registrierung auf Remote-Computern
Die Registrierung ist statisch und die Werte ändern sich weder lokal noch remote. Sie können sicher sein, dass das, was Sie lokal sehen, dasselbe ist wie das, was Sie remote sehen.
Die gleiche Version lokal und remote anzuzeigen, ist gut. Aber ich habe eine bessere Möglichkeit, es Ihnen mit der automatischen Variable $PSVersionTable
zu zeigen.
Überprüfen Sie die Powershell-Version mit dem Befehl $PSVersionTable.PSVersion
Die letzte und endgültige Methode besteht darin, auf die Eigenschaft PSVersion
der automatischen Variablen $PSVersionTable
zu verweisen. Diese Methode stellt immer den PowerShell-Engine dar.
Die automatische Variable $PSVersionTable
ist eine schreibgeschützte Hashtabelle, die speziell Informationen zur Version der PowerShell-Engine zurückgibt. Diese automatische Variable gibt nicht nur die Version zurück, sondern auch die PSEdition. Diese Eigenschaft kann entweder Core oder Desktop sein, um weitere Informationen zur Ausgabe von PowerShell bereitzustellen.

$PSVersionTable auf Remote-Computern
Die Verwendung der automatischen Variablen $PSVersionTable
ist sowohl lokal als auch remote genau. Sie können unten sehen, dass durch das Einbetten von $PSVersionTable.PSVersion
in einem Skriptblock und das Ausführen dieses Codes auf einem Remote-Computer dieselbe Version zurückgegeben wird.
Zusammenfassung
In diesem Blogbeitrag haben Sie alle Möglichkeiten gelernt, die Version von PowerShell sowohl lokal als auch remote zu überprüfen. Ich hoffe, die ersten Methoden haben Ihnen eine Vorstellung davon gegeben, welche Möglichkeiten es nicht gibt, die Version zu überprüfen!
I recommend always using $PSVersionTable.PSVersion
. All of the other methods may appear similar to the PowerShell engine version but may not always reflect the engine version.
Wenn ich eine Methode verpasst habe, lassen Sie es mich bitte in den Kommentaren wissen. Ich werde den Beitrag gerne aktualisieren und Ihnen Anerkennung geben.