Określ zainstalowaną wersję programu PowerShell

Jak mogę określić, która wersja PowerShell jest zainstalowana na komputerze i czy w ogóle jest zainstalowana?

 2143
Author: MagicAndi, 2009-12-01

22 answers

Użyj $PSVersionTable.PSVersion do określenia wersji silnika. Jeśli zmienna nie istnieje, można bezpiecznie założyć, że silnik jest wersją 1.0.

Zauważ, że $Host.Version i (Get-Host).Version nie są wiarygodne - odzwierciedlają tylko wersja hosta, nie Silnik. PowerGUI, PowerShellPLUS itp. czy wszystkie aplikacje hostingowe i ustawią wersję hosta, aby odzwierciedlała swój produkt wersja-która jest całkowicie poprawna, ale nie to, czego szukasz.

PS C:\> $PSVersionTable.PSVersion

Major  Minor  Build  Revision
-----  -----  -----  --------
4      0      -1     -1
 2877
Author: 12 revs, 10 users 74%user156862,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-24 01:09:51

Użyłbym albo Get-Host lub $PSVersionTable. Jak zauważa Andy Schneider, $PSVersionTable nie działa w wersji 1; została wprowadzona w wersji 2.

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
 380
Author: Thomas Bratt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-02 18:50:10

Aby ustalić, czy PowerShell jest zainstalowany, możesz sprawdzić w rejestrze istnienie

HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install

I

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3

I, jeśli istnieje, czy wartość jest 1 (dla zainstalowanego), jak opisano w poście na blogusprawdź czy PowerShell zainstalowany i wersja.

Aby określić zainstalowaną wersję PowerShell, możesz sprawdzić klucze rejestru

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

I

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

Aby określić wersję PowerShell, która jest zainstalowana z skrypt. ps1, możesz użyć poniższego jednowierszowego, jak wyszczególniono na PowerShell.com w którą wersję PowerShell mam uruchomić.

$isV2 = test-path variable:\psversiontable

Ta sama strona daje również funkcję zwracającą wersję:

function Get-PSVersion {
    if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}
 87
Author: MagicAndi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-12-14 00:30:32

Możesz spojrzeć na wbudowaną zmienną, $psversiontable. Jeśli nie istnieje, masz V1. Jeśli istnieje, da Ci wszystkie potrzebne informacje.

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    
 78
Author: Andy Schneider,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-06-02 18:50:26

Chcę tylko dodać moje 2 centy.

Możesz bezpośrednio sprawdzić wersję tylko jedną linią, wywołując powershell zewnętrznie , na przykład z wiersza polecenia

powershell -Command "$PSVersionTable.PSVersion"

EDIT:

Zgodnie z @psaul ty możesz mieć jedną komendę, która jest agnostyczna skąd pochodzi (CMD, Powershell lub Pwsh), dziękuję za to.

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

Przetestowałem i działało bezbłędnie zarówno na CMD jak i Powershell

obraz

 27
Author: Patrick Bard,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-07-13 16:49:38

Możesz sprawdzić, czy zainstalowano wersję Windows PowerShell, wykonując następujące sprawdzenie:

  1. Kliknij Start, kliknij Wszystkie programy, kliknij akcesoria, Kliknij Windows PowerShell, a następnie kliknij Windows PowerShell.
  2. W konsoli Windows PowerShell wpisz następujące polecenie w wierszu polecenia, a następnie naciśnij ENTER:

    Get-Host / Select-Object Version

Zobaczysz wyjście, które wygląda jak to:

Version
-------
3.0

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

 21
Author: Eclipses,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-21 08:27:40

Zalecaną przez Microsoft metodą sprawdzania, czy PowerShell jest zainstalowany i określania zainstalowanej wersji jest sprawdzenie dwóch specyficznych kluczy rejestru. Odtworzyłem szczegóły na wypadek, gdyby link się zepsuł.

Zgodnie z linkowaną stroną:

W zależności od innych kluczy rejestru lub wersji programu PowerShell.exe lub lokalizacja PowerShell.exe nie jest gwarantowane do pracy w dłuższej perspektywie.

Aby sprawdzić, czy jakiekolwiek zainstalowano wersję programu PowerShell, sprawdź w rejestrze następującą wartość:

  • Key Location: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
  • Nazwa Wartości: Install
  • Typ wartości: REG_DWORD
  • Dane wartości: 0x00000001 (1

Aby sprawdzić czy zainstalowana jest wersja 1.0 lub 2.0 programu PowerShell, sprawdź w rejestrze następującą wartość:

  • Key Location: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
  • Nazwa Wartości: PowerShellVersion
  • Typ Wartości: REG_SZ
  • Dane Wartości:
 18
Author: Starfish,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-17 07:59:47

Znalazłem najprostszy sposób, aby sprawdzić, czy zainstalowany był:

  • Uruchom wiersz polecenia (Start, Run, cmd, następnie OK)
  • Wpisz powershell i naciśnij return. Następnie powinieneś uzyskać znak zachęty PowerShell PS:

C:\Users\MyUser>powershell

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

PS C:\Users\MyUser>

Możesz następnie sprawdzić wersję z wiersza polecenia PowerShell, wpisując $PSVersionTable.PSVersion:

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

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

PS C:\Users\MyUser>

Wpisz exit Jeśli chcesz wrócić do wiersza polecenia (exit ponownie, jeśli chcesz również zamknąć wiersz polecenia).

Aby uruchomić skrypty, zobacz http://ss64.com/ps/syntax-run.html .

 11
Author: SharpC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-04 10:31:37

Użycie:

$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'}
}

Szczegółowy skrypt można pobrać z Jak określić zainstalowaną wersję programu PowerShell.

 10
Author: Dale Chen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-04 09:09:52

Aby sprawdzić, czy PowerShell jest zainstalowany użyj:

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

Aby sprawdzić, czy RC2 lub RTM jest zainstalowany użyj:

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

Źródło: ta strona .

 8
Author: Daniel Elliott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-03-19 14:19:22

$host.version jest po prostu błędne/niewiarygodne. Daje to wersję pliku wykonywalnego hostingu (powershell.exe, powergui.exe, powershell_ise.exe, powershellplus.exe itp) i NIE Wersja samego silnika.

Wersja silnikowa jest zawarta w $psversiontable.psversion. Dla PowerShell 1.0, ta zmienna nie istnieje, więc oczywiście, jeśli ta zmienna nie jest dostępna, jest całkowicie bezpieczne, aby założyć, że silnik jest 1.0, oczywiście.

 7
Author: x0n,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-08-26 14:11:13

Najprostszym sposobem na zapomnienie tej strony i nigdy do niej nie wrócić jest nauczenie się Get-Variable:

Get-Variable | where {$_.Name -Like '*version*'} | %{$_[0].Value}

Nie ma potrzeby zapamiętywania każdej zmiennej. Just {[1] } is enough (and "There should be something about version").

 7
Author: Roman Pokrovskij,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-03 09:57:42

Ponieważ najbardziej pomocna odpowiedź nie odnosi się do jeśli istnieje część, pomyślałem, że dam jedną szansę na to poprzez szybkie i brudne rozwiązanie. Polega na tym, że PowerShell znajduje się w zmiennej środowiskowej path , co prawdopodobnie jest tym, czego chcesz. (Hat tip to the top odpowiedź, ponieważ nie wiedziałem, że.) Wklej to do pliku tekst i nazwij go

Testowa Wersja Powershell.cmd

Lub podobne.

@echo off
echo Checking powershell version...
del "%temp%\PSVers.txt" 2>nul
powershell -command "[string]$PSVersionTable.PSVersion.Major +'.'+ [string]$PSVersionTable.PSVersion.Minor | Out-File ([string](cat env:\temp) + '\PSVers.txt')" 2>nul
if errorlevel 1 (
 echo Powershell is not installed. Please install it from download.Microsoft.com; thanks.
) else (
 echo You have installed Powershell version:
 type "%temp%\PSVers.txt"
 del "%temp%\PSVers.txt" 2>nul
)
timeout 15
 6
Author: Pecos Bill,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-30 12:11:50

Możesz również wywołać polecenie "host" z linii poleceń PowerShell. Powinna ona zawierać wartość zmiennej $host.

 4
Author: Tylor Durden,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-30 09:27:43

Poniższy cmdlet zwróci wersję PowerShell.

$PSVersionTable.PSVersion.Major
 4
Author: Venkatakrishnan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-04 09:08:28

Spróbuj używając następującego polecenia:

Get-Host

Widziane tutaj

 3
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-05-09 14:35:13

Rozszerzenie odpowiedzi o operator select:

Get-Host | select {$_.Version}
 3
Author: HaBo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-04 21:55:10

Użyj polecenia Get-Host . Druga linia wyniku to wersja.

 2
Author: Shami,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-05 19:51:28

Zazwyczaj dostajesz go za pomocą numeru głównego, który możesz uzyskać w następujący sposób:

$PSVersionTable.PSVersion.Major
 2
Author: Jose Ortega,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-09-29 04:51:01

Spróbuj ;) ((Get-Host).Version).Major

 1
Author: Ivandro Ismael,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-26 09:28:52
# Get PowerShell Version
function Global:version
{
      $PSVersionTable.PSVersion
}
 0
Author: Kolob Canyon,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-27 15:55:51

Użyj Get-Host aby uzyskać szczegóły dla wersji PowerShell:

PS C:\Users\ashash001c> Get-Host

Name             : ConsoleHost
Version          : 2.0
InstanceId       : ##################################
UI               : System.Management.Automation.Internal.Host.InternalHostUserI
                   nterface
CurrentCulture   : en-US
CurrentUICulture : en-US
PrivateData      : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace         : System.Management.Automation.Runspaces.LocalRunspace
 -1
Author: Abhishek,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-12-30 21:50:50