webdevqa.jp.net

インストールされているPowerShellのバージョンを確認する

どのバージョンのPowerShellがコンピューターにインストールされているのか、そして実際にインストールされているのかを確認するにはどうすればよいですか。

2272
MagicAndi

エンジンのバージョンを確認するには$PSVersionTable.PSVersionを使用してください。変数が存在しない場合は、エンジンがバージョン1.0であると想定しても安全です。

$Host.Version(Get-Host).Versionは信頼できない - それらはホストのバージョンのみを反映し、エンジンは反映しないことに注意してください。 PowerGUI、 PowerShellPLUSなどはすべてホスティングアプリケーションであり、は製品のバージョンを反映するようにホストのバージョンを設定します。探している。

PS C:\> $PSVersionTable.PSVersion

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

Get-Hostまたは $ PSVersionTable のいずれかを使用します。 Andy Schneiderが指摘しているように、$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
400
Thomas Bratt

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

.ps1スクリプトからインストールされたPowerShellのバージョンを確認するには、PowerShell.comので実行されているPowerShellのバージョンに、次のようなワンライナーを使用できます。

$isV2 = test-path variable:\psversiontable

同じサイトにもバージョンを返す機能があります。

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

組み込み変数$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    
88
Andy Schneider

ここに私の2セントを追加したいだけです。

コマンドプロンプトなどからpowershell 外部を呼び出すだけで、1行で直接バージョンを確認できます。

powershell -Command "$PSVersionTable.PSVersion"

編集:

@psaulによると you can は実際にはそれが来た場所から不可知論者である1つのコマンドを持つことができます、ありがとう。

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

私はテストしました、そしてそれはCMDとPowershellの両方で完璧に動作しました

image

32
Patrick Bard

次の確認を完了することで、Windows PowerShellのバージョンがインストールされたことを確認できます。

  1. [スタート]ボタン、[すべてのプログラム]、[アクセサリ]、[Windows PowerShell]、[Windows PowerShell]の順にクリックします。
  2. Windows PowerShellコンソールで、[コマンドプロンプト]に次のコマンドを入力し、Enterキーを押します。

    Get-Host |オブジェクト選択バージョン

あなたはこのように見える出力を見るでしょう:

Version
-------
3.0

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

22
Eclipses

PowerShellがインストールされているかどうかを確認し、インストールされているバージョンを確認するためのマイクロソフトの推奨する前方互換性のある方法 は2つの特定のレジストリキーを調べることです。リンクが切れた場合に備えて、ここで詳細を再現しました。

リンク先のページによると:

他のレジストリキー、PowerShell.exeのバージョン、またはPowerShell.exeの場所によっては、長期にわたって機能することが保証されていません。

any version がインストールされているかどうかを確認するには、レジストリで次の値を確認します。

  • キーの場所:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1
  • 値の名前:インストール
  • 値のタイプ:REG_DWORD
  • 値のデータ:0x00000001(1

PowerShellのバージョン1.0または2.0 がインストールされているかどうかを確認するには、レジストリで次の値を確認します。

  • キーの場所:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine
  • 値の名前:PowerShellVersion
  • 値のタイプ:REG_SZ
  • 値のデータ:<1.0 | 2.0>
19
Starfish

インストールされているかどうかを確認する最も簡単な方法は次のとおりです。

  • コマンドプロンプトを実行します([スタート]、[実行]、[cmd]、[OK])。
  • powershellと入力してreturnキーを押します。これでPowerShellのPSプロンプトが表示されます。

C:\Users\MyUser>powershell

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

PS C:\Users\MyUser>

PowerShellプロンプトから$PSVersionTable.PSVersionと入力してバージョンを確認できます。

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

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

PS C:\Users\MyUser>

コマンドプロンプトに戻る場合はexitを入力します(コマンドプロンプトも閉じる場合は再度exit)。

スクリプトを実行するには、 http://ss64.com/ps/syntax-run.html を参照してください。

11
SharpC

$Host.versionは単なる間違った/信頼できないものです。これにより、ホスティング実行可能ファイルのバージョン(powershell.exe、powergui.exe、powershell_ise.exe、powershellplus.exeなど)および not エンジン自体のバージョンがわかります。

エンジンのバージョンは$psversiontable.psversionに含まれています。 PowerShell 1.0では、この変数は存在しません。この変数が利用できない場合は明らかに、エンジンが1.0であると仮定してもまったく安全です。

9
x0n

つかいます:

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

詳細なスクリプトは、PowerShellのインストール済みバージョンの確認方法からダウンロードできます。

9
Dale Chen

PowerShellがインストールされているかどうかを確認するには、次のコマンドを使用します。

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

RC2またはRTMがインストールされているかどうかを確認するには、次のコマンドを使用します。

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

出典: このウェブサイト

7
Daniel Elliott

このページを忘れずにこのページに戻らない最も簡単な方法は、Get-Variableを学ぶことです。 

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

すべての変数を覚えておく必要はありません。 Get-Variableだけで十分です(そして「versionについて何かあるはずです」)。 

6

最も有用な答えは (もし存在すれば )の部分を扱っていなかったので、私はそれを手早く解決する方法で解決しようと思った。それはPowerShellが 環境変数 パスにあることに依存しています。 (私はそれを知らなかったのでトップの答えにハットチップします。)これを text ファイルに貼り付けて名前を付けます。

テストPowershell Version.cmd

または類似。

@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
Pecos Bill

以下のコマンドレットはPowerShellのバージョンを返します。

$PSVersionTable.PSVersion.Major
3
Venkatakrishnan

PSのバージョンを確認してから、適切なコードを実行する必要がありました。私達のサーバーのいくつかはv5を実行し、他のものはv4を実行します。これは、compressのようないくつかの機能が利用可能かどうかを示します。

これが私の解決策です: 

if ($PSVersionTable.PSVersion.Major -eq 5) {
    #Execute code available in 5, like Compress
    Write-Host "You are running version 5"
}
else {
    #Use a different process
    Write-Host "This is version $PSVersionTable.PSVersion.Major"
}
3
Atron Seige

PowerShellコマンドラインから「Host」コマンドを呼び出すこともできます。それはあなたに$Host変数の値を与えるべきです。

2
Tylor Durden

これは「バッチファイルはPowerShellバージョンを取得します」の検索結果のトップなので、Powershellのバージョンに応じてバッチファイルで条件付きフローを実行する方法の基本的な例を示します。

一般的な例

powershell "exit $PSVersionTable.PSVersion.Major"
if %errorlevel% GEQ 5 (
    echo Do some fancy stuff that only powershell v5 or higher supports
) else (
    echo Functionality not support by current powershell version.
)

実世界の例

powershell "exit $PSVersionTable.PSVersion.Major"
if %errorlevel% GEQ 5 (
    rem Unzip archive automatically
    powershell Expand-Archive Compressed.Zip
) else (
    rem Make the user unzip, because lazy
    echo Please unzip Compressed.Zip prior to continuing...
    pause
)
1
Derpy

通常は、メジャー番号を使用して取得できます。

$PSVersionTable.PSVersion.Major
1
Jose Ortega

選択演算子で答えを拡張する:

Get-Host | select {$_.Version}
1
HaBo

次のコマンドで試してください。

Get-Host

見た ここ

0
user2366586