Frage Ermitteln Sie die installierte PowerShell-Version


Wie kann ich feststellen, welche Version von PowerShell auf einem Computer installiert ist und in der Tat, wenn sie überhaupt installiert ist?


2076
2017-12-01 11:30


Ursprung


Antworten:


Benutzen $PSVersionTable.PSVersion um die Motorversion zu bestimmen. Wenn die Variable nicht existiert, kann davon ausgegangen werden, dass es sich bei der Engine um eine Version handelt 1.0.

Beachten Sie, dass $Host.Version und (Get-Host).Version sind nicht zuverlässig - sie reflektieren Nur die Version des Hosts, nicht die Engine. PowerGUI, PowerShellPLUS usw. sind alle Hosting-Anwendungen und Sie legen die Version des Hosts so fest, dass sie ihr Produkt widerspiegelt Version - das ist völlig richtig, aber nicht das, wonach Sie suchen.

PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1

2793
2018-01-19 11:06



Ich würde beides benutzen Get-Host oder $ PSVersionTable. Wie Andy Schneider betont, $PSVersionTable funktioniert nicht in Version 1; Es wurde in Version 2 eingeführt.

get-host

Name             : ConsoleHost
Version          : 2.0
InstanceId       : d730016e-2875-4b57-9cd6-d32c8b71e18a
UI               : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture   : en-GB
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace

$PSVersionTable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.4200
BuildVersion                   6.0.6002.18111
PSVersion                      2.0
WSManStackVersion              2.0
PSCompatibleVersions           {1.0, 2.0}
SerializationVersion           1.1.0.1
PSRemotingProtocolVersion      2.1

371
2017-12-01 11:34



Um festzustellen, ob PowerShell installiert ist, können Sie die Registrierung auf Vorhandensein überprüfen

HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install

und

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3

und, falls vorhanden, ob der Wert 1 ist (für die Installation), wie im Blogpost beschrieben Überprüfen Sie, ob PowerShell installiert und versioniert ist.

Um die Version von PowerShell zu ermitteln, die installiert ist, können Sie die Registrierungsschlüssel überprüfen

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion

und

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion

Um die Version von PowerShell zu ermitteln, die von einem .ps1-Skript installiert wird, können Sie den folgenden Einzeiler verwenden, wie auf PowerShell.com in beschrieben Welche PowerShell-Version verwende ich?.

$isV2 = test-path variable:\psversiontable

Die gleiche Site gibt auch eine Funktion zum Zurückgeben der Version:

function Get-PSVersion {
    if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}

86
2017-12-01 14:37



Sie können die eingebaute Variable betrachten, $psversiontable. Wenn es nicht existiert, hast du V1. Wenn es existiert, gibt es Ihnen alle Informationen, die Sie benötigen.

1 >  $psversiontable

Name                           Value                                           
----                           -----                                           
CLRVersion                     2.0.50727.4927                                  
BuildVersion                   6.1.7600.16385                                  
PSVersion                      2.0                                             
WSManStackVersion              2.0                                             
PSCompatibleVersions           {1.0, 2.0}                                      
SerializationVersion           1.1.0.1                                         
PSRemotingProtocolVersion      2.1    

77
2018-04-25 13:47



Möchte nur meine 2 Cent hier hinzufügen.

Sie können die Version nur mit einer einzigen Zeile überprüfen, indem Sie die Powershell aufrufen externwie von der Eingabeaufforderung

powershell -Command "$PSVersionTable.PSVersion"

BEARBEITEN:

Gemäß @psaul Sie kann habe eigentlich einen Befehl, der von der Stelle, an der er kam, agnostisch ist (CMD, Powershell oder Pwsh), danke dafür.

powershell -command "(Get-Variable PSVersionTable -ValueOnly).PSVersion" 

Ich habe getestet und es funktionierte einwandfrei auf CMD und Powershell

image


23
2018-03-10 11:32



Sie können die installierte Windows PowerShell-Version überprüfen, indem Sie die folgende Überprüfung durchführen:

  1. Klicken Sie auf Start, klicken Sie auf Alle Programme, klicken Sie auf Zubehör, klicken Sie auf Windows PowerShell, und klicken Sie dann auf Windows PowerShell.
  2. Geben Sie in der Windows PowerShell-Konsole den folgenden Befehl an der Eingabeaufforderung ein, und drücken Sie dann die EINGABETASTE:

    Get-Host | Wählen Sie eine Objektversion aus

Sie sehen eine Ausgabe, die wie folgt aussieht:

Version
-------
3.0

http://www.myerrorsandmysolutions.com/how-to-verify-the-windows-powershell-version-installed/


19
2018-06-17 07:59



Die von Microsoft empfohlene vorwärtskompatible Methode zum Überprüfen, ob PowerShell installiert ist, und zum Ermitteln der installierten Version ist es, zwei spezifische Registrierungsschlüssel zu betrachten. Ich habe die Details hier wiedergegeben, falls die Verbindung unterbrochen wird.

Laut der verlinkten Seite:

Abhängig von anderen Registrierungsschlüsseln oder Versionen von PowerShell.exe oder dem Speicherort von PowerShell.exe kann nicht garantiert werden, dass sie auf lange Sicht funktionieren.

Um zu überprüfen, ob jede Version Wenn PowerShell installiert ist, suchen Sie in der Registrierung nach dem folgenden Wert:

  • Schlüsselposition: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
  • Wertname: Installieren
  • Werttyp: REG_DWORD
  • Wertdaten: 0x00000001 (1

Überprüfen ob Version 1.0 oder 2.0 Wenn PowerShell installiert ist, suchen Sie in der Registrierung nach dem folgenden Wert:

  • Schlüsselposition: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
  • Wertname: PowerShellVersion
  • Werttyp: REG_SZ
  • Wertdaten: <1.0 | 2.0>

18
2017-11-04 10:24



Ich fand den einfachsten Weg zu überprüfen, ob installiert war:

  • Ausführen einer Eingabeaufforderung (Start, Ausführen, cmd, dann OK)
  • Art powershell dann drücken Sie zurück. Sie sollten dann die PowerShell erhalten PS prompt:

C:\Users\MyUser>powershell

Windows PowerShell
Copyright (C) 2009 Microsoft Corporation. All rights reserved.

PS C:\Users\MyUser>

Sie können die Version dann an der PowerShell-Eingabeaufforderung überprüfen, indem Sie Folgendes eingeben $PSVersionTable.PSVersion:

PS C:\Users\MyUser> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
2      0      -1     -1

PS C:\Users\MyUser>

Art exit Wenn Sie zur Eingabeaufforderung zurückkehren möchten (exit erneut, wenn Sie auch die Eingabeaufforderung schließen möchten).

Um Skripts auszuführen, siehe http://ss64.com/ps/syntax-run.html.


11
2017-12-01 11:35



Um zu überprüfen, ob PowerShell installiert ist, verwenden Sie:

HKLM\Software\Microsoft\PowerShell\1 Install ( = 1 )

Um zu überprüfen, ob RC2 oder RTM installiert ist, verwenden Sie:

HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-00301) -- For RC2
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-04309) -- For RTM

Quelle: Diese Internetseite.


8
2017-11-01 01:41



Benutzen:

$psVersion = $PSVersionTable.PSVersion
If ($psVersion)
{
    #PowerShell Version Mapping
    $psVersionMappings = @()
    $psVersionMappings += New-Object PSObject -Property @{Name='5.1.14393.0';FriendlyName='Windows PowerShell 5.1 Preview';ApplicableOS='Windows 10 Anniversary Update'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.1.14300.1000';FriendlyName='Windows PowerShell 5.1 Preview';ApplicableOS='Windows Server 2016 Technical Preview 5'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.494';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3172985 1607'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.122';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3140743 1603'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.117';FriendlyName='Windows PowerShell 5 RTM 1602';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.63';FriendlyName='Windows PowerShell 5 RTM';ApplicableOS='Windows 10 1511 + KB3135173 1602'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10586.51';FriendlyName='Windows PowerShell 5 RTM 1512';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10514.6';FriendlyName='Windows PowerShell 5 Production Preview 1508';ApplicableOS='Windows Server 2012 R2'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.10018.0';FriendlyName='Windows PowerShell 5 Preview 1502';ApplicableOS='Windows Server 2012 R2'}
    $psVersionMappings += New-Object PSObject -Property @{Name='5.0.9883.0';FriendlyName='Windows PowerShell 5 Preview November 2014';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows 8.1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='4.0';FriendlyName='Windows PowerShell 4 RTM';ApplicableOS='Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8.1, and Windows 7 SP1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='3.0';FriendlyName='Windows PowerShell 3 RTM';ApplicableOS='Windows Server 2012, Windows Server 2008 R2 SP1, Windows 8, and Windows 7 SP1'}
    $psVersionMappings += New-Object PSObject -Property @{Name='2.0';FriendlyName='Windows PowerShell 2 RTM';ApplicableOS='Windows Server 2008 R2 SP1 and Windows 7'}
    foreach ($psVersionMapping in $psVersionMappings)
    {
        If ($psVersion -ge $psVersionMapping.Name) {
            @{CurrentVersion=$psVersion;FriendlyName=$psVersionMapping.FriendlyName;ApplicableOS=$psVersionMapping.ApplicableOS}
            Break
        }
    }
}
Else{
    @{CurrentVersion='1.0';FriendlyName='Windows PowerShell 1 RTM';ApplicableOS='Windows Server 2008, Windows Server 2003, Windows Vista, Windows XP'}
}

Sie können das detaillierte Skript von herunterladen So ermitteln Sie die installierte PowerShell-Version.


8
2018-04-17 20:46