Вопрос: Определите установленную версию PowerShell


Как определить, какая версия PowerShell установлена ​​на компьютере, и действительно ли она установлена ​​вообще?


2030


источник


Ответы:


использование $PSVersionTable.PSVersionдля определения версии двигателя. Если переменная не существует, можно с уверенностью предположить, что движок является версией 1.0,

Обратите внимание, что $Host.Versionа также (Get-Host).Versionне являются надежными - они отражают только версия хоста, а не движок. PowerGUI, PowerShellPLUS и т. Д. - все хостинг-приложения и они установят версию хоста, чтобы отразить их продукт версия - это совершенно правильно, но не то, что вы ищете.

PS C:\> $PSVersionTable.PSVersion

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

2729



Я бы использовал либо Get-Host или $ PSVersionTable , Как отмечает Энди Шнайдер, $PSVersionTableне работает в версии 1; он был представлен в версии 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

363



Чтобы определить, установлен ли PowerShell, вы можете проверить реестр на наличие

HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install

а также

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3

и, если оно существует, будет ли значение равно 1 (для установленного), как указано в сообщении блога Проверьте, установлен ли PowerShell и версия ,

Чтобы определить версию PowerShell, которая установлена, вы можете проверить разделы реестра

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

а также

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

Чтобы определить версию PowerShell, установленную с помощью сценария .ps1, вы можете использовать следующий однострочный шрифт, как описано в PowerShell.com в Какую версию PowerShell я запускаю? ,

$isV2 = test-path variable:\psversiontable

Тот же сайт также предоставляет функцию для возврата версии:

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

86



Вы можете посмотреть встроенную переменную, $psversiontable, Если он не существует, у вас есть V1. Если он действительно существует, он предоставит вам всю необходимую информацию.

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    

73



Просто хочу добавить мои 2 цента здесь.

Вы можете напрямую проверить версию с одной строкой только путем вызова powershell внешне , например, из командной строки

powershell -Command "$PSVersionTable.PSVersion"

22



Microsoft's recommended forward compatible method for checking if PowerShell is installed and determining the installed version is to look at two specific registry keys. I've reproduced the details here in case the link breaks.

According to the linked page:

Depending on any other registry key(s), or version of PowerShell.exe or the location of PowerShell.exe is not guaranteed to work in the long term.

To check if any version of PowerShell is installed, check for the following value in the registry:

  • Key Location: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
  • Value Name: Install
  • Value Type: REG_DWORD
  • Value Data: 0x00000001 (1

To check whether version 1.0 or 2.0 of PowerShell is installed, check for the following value in the registry:

  • Key Location: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
  • Value Name: PowerShellVersion
  • Value Type: REG_SZ
  • Value Data: <1.0 | 2.0>

18



You can verify that Windows PowerShell version installed by completing the following check:

  1. Click Start, click All Programs, click Accessories, click Windows PowerShell, and then click Windows PowerShell.
  2. In the Windows PowerShell console, type the following command at the command prompt and then press ENTER:

    Get-Host | Select-Object Version

You will see output that looks like this:

Version
-------
3.0

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


17



I found the easiest way to check if installed was to:

  • run a command prompt (Start, Run, cmd, then OK)
  • type powershell then hit return. You should then get the PowerShell PS prompt:

C:\Users\MyUser>powershell

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

PS C:\Users\MyUser>

You can then check the version from the PowerShell prompt by typing $PSVersionTable.PSVersion:

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

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

PS C:\Users\MyUser>

Type exit if you want to go back to the command prompt (exit again if you want to also close the command prompt).

To run scripts, see http://ss64.com/ps/syntax-run.html.


11