Wie kann ich feststellen, welche Version von PowerShell auf einem Computer installiert ist und ob sie überhaupt installiert ist?
powershell
MagicAndi
quelle
quelle
$PSVersionTable
ist zuverlässiger und gibt $ PSVersion zurück. Sie können auch verwenden$PSVersionTable.PSVersion
. Selbst wenn Sie remote mit dem Computer verbunden sind, auf dem eine andere Version (invoke-command -computername myRemotePC -Credential foo {$host}
) ausgeführt wird, wird anscheinend$host
nur die niedrigste Version angezeigt, die für die Serialisierung vereinbart wurde. While$PSVersionTable
zeigt die wahre Version an. Hoffe, es würde jemandem helfen ..notepad $profile
gerannt bin und mich hineingeworfenfunction psver { $PSVersionTable; $PSVersionTable.PSVersion }
habe. Ein Nachladen mit. $profile
und ich kann einfachpsver
jederzeit eingeben, um die detaillierten Versionsinformationen und andere Details zu erhalten.Ich würde entweder Get-Host oder $ PSVersionTable verwenden . Wie Andy Schneider betont,
$PSVersionTable
funktioniert in Version 1 nicht; es wurde in Version 2 eingeführt.quelle
$host.version
ist nicht zuverlässig - zum Beispiel in Powergui gibt es die Powergui-Host-Version zurück, die nicht mit der Powershell-Engine-Version identisch ist (was erwünscht ist)Sie können sich die eingebaute Variable ansehen
$psversiontable
. Wenn es nicht existiert, haben Sie V1. Wenn es existiert, erhalten Sie alle Informationen, die Sie benötigen.quelle
Um festzustellen, ob PowerShell installiert ist, können Sie die Registrierung auf das Vorhandensein von überprüfen
und
und, falls vorhanden, ob der Wert 1 ist (für installiert), wie im Blog-Beitrag beschrieben. Überprüfen Sie, ob PowerShell installiert ist und welche Version .
Um die installierte Version von PowerShell zu ermitteln, können Sie die Registrierungsschlüssel überprüfen
und
Um die Version von PowerShell zu ermitteln, die über ein .ps1-Skript installiert wird, können Sie den folgenden Einzeiler verwenden, wie auf PowerShell.com beschrieben, in dem PowerShell-Version ausgeführt wird .
Dieselbe Site bietet auch eine Funktion zum Zurückgeben der Version:
quelle
Sie können die Version direkt mit nur einer Zeile überprüfen, indem Sie PowerShell extern aufrufen , z. B. über die Eingabeaufforderung
Bis nach @psaul Sie können tatsächlich einen Befehl haben , die von Agnostiker ist , woher es kam (CMD, Powershell oder Pwsh). Danke für das.
Ich habe getestet und es hat sowohl auf CMD als auch auf PowerShell einwandfrei funktioniert.
quelle
cmd
undpowershell
ohne Erfolg funktioniert . Ich hätte das gleiche Verhalten auch erwartet. :)pwsh -Command "(Get-Variable PSVersionTable -ValueOnly).PSVersion"
funktioniert super.Sie können überprüfen, ob die Windows PowerShell-Version installiert ist, indem Sie die folgende Prüfung durchführen:
Geben Sie in der Windows PowerShell-Konsole an der Eingabeaufforderung den folgenden Befehl ein und drücken Sie die EINGABETASTE:
Sie sehen eine Ausgabe, die folgendermaßen aussieht:
http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/
quelle
Die von Microsoft empfohlene vorwärtskompatible Methode zur Überprüfung, ob PowerShell installiert ist, und zur Ermittlung der installierten Version besteht darin, zwei bestimmte Registrierungsschlüssel zu überprüfen . Ich habe die Details hier reproduziert, falls der Link unterbrochen wird.
Laut der verlinkten Seite:
Überprüfen Sie in der Registrierung , ob eine Version von PowerShell installiert ist:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
Überprüfen Sie in der Registrierung , ob in Version 1.0 oder 2.0 von PowerShell Folgendes installiert ist:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
quelle
Ich fand den einfachsten Weg, um zu überprüfen, ob installiert war:
cmd
, dann OK).powershell
dann die Eingabetaste ein. Sie sollten dann die PowerShell-PS
Eingabeaufforderung erhalten:Sie können die Version dann an der PowerShell-Eingabeaufforderung überprüfen, indem Sie Folgendes eingeben
$PSVersionTable.PSVersion
:Geben
exit
Sie ein, wenn Sie zur Eingabeaufforderungexit
zurückkehren möchten ( erneut, wenn Sie auch die Eingabeaufforderung schließen möchten).Informationen zum Ausführen von Skripten finden Sie unter http://ss64.com/ps/syntax-run.html .
quelle
$host.version
ist einfach falsch / unzuverlässig. Dies gibt Ihnen die Version der ausführbaren Hosting-Datei (Powershell.exe, Powergui.exe, Powershell_ise.exe, Powershellplus.exe usw.) und nicht die Version der Engine selbst.Die Motorversion ist in enthalten
$psversiontable.psversion
. Für PowerShell 1.0 ist diese Variable nicht vorhanden. Wenn diese Variable nicht verfügbar ist, kann davon ausgegangen werden, dass die Engine offensichtlich 1.0 ist.quelle
Verwenden:
Sie können das detaillierte Skript unter So ermitteln Sie die installierte PowerShell-Version herunterladen .
quelle
Der einfachste Weg, diese Seite zu vergessen und nie wieder dorthin zurückzukehren, besteht darin, Folgendes zu lernen
Get-Variable
:Es ist nicht erforderlich, sich jede Variable zu merken. Nur
Get-Variable
ist genug (und "Es sollte etwas über die Version sein").quelle
$PSVersionTable
Um zu überprüfen, ob PowerShell installiert ist, verwenden Sie:
Um zu überprüfen, ob RC2 oder RTM installiert ist, verwenden Sie:
Quelle: diese Website .
quelle
Da die hilfreichste Antwort nicht auf den vorhandenen Teil einging, dachte ich, ich würde ihn über eine schnelle und schmutzige Lösung aufgreifen. Es stützt sich auf Powershell auf dem Weg zu sein Umgebungsvariable , die wahrscheinlich ist , was Sie wollen. (Hutspitze zur obersten Antwort, da ich das nicht wusste.) Fügen Sie dies in eine Textdatei ein und benennen Sie es
o.ä.
quelle
Ich musste die Version von PowerShell überprüfen und dann den entsprechenden Code ausführen. Einige unserer Server führen Version 5 und andere Version 4 aus. Dies bedeutet, dass einige Funktionen, wie z. B. Komprimieren, möglicherweise verfügbar sind oder nicht.
Das ist meine Lösung:
quelle
Das folgende Cmdlet gibt die PowerShell-Version zurück.
quelle
$PSVersionTable
ist eine automatische Variable; ein Objekt. Es ist kein Cmdlet.Dies ist das Top-Suchergebnis für "Batch-Datei erhält Powershell-Version". Daher möchte ich ein grundlegendes Beispiel dafür geben, wie ein bedingter Fluss in einer Batch-Datei abhängig von der Powershell-Version ausgeführt wird
Allgemeines Beispiel
Beispiel aus der realen Welt
quelle
Sie können den Befehl "host" auch über die PowerShell-Befehlszeile aufrufen. Es sollte Ihnen den Wert der
$host
Variablen geben.quelle
host
beschließt zuGet-Host
. Unabhängig davon ist es kein zuverlässiger Weg, um die Version zu erhalten.Erweitern der Antwort mit einem ausgewählten Operator:
quelle
Get-Host
).