コンピュータにインストールされているPowerShellのバージョンや、インストールされているかどうかを確認するにはどうしたらいいですか?
エンジンのバージョンを調べるには、$PSVersionTable.PSVersion
を使用します。この変数が存在しない場合は、エンジンのバージョンが 1.0
であると考えてよいでしょう。
ただし、$Host.Version
および(Get-Host).Version
は信頼できません。
エンジンではなく、ホストのバージョンのみを反映します。PowerGUIです。
PowerGUI、PowerShellPLUSなどはすべてホストアプリケーションであり
ホストのバージョンを自分たちの製品のバージョンを反映するように設定します。
version — これは完全に正しいのですが、あなたが探しているものではありません。
PS C:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1
PowerShellがインストールされているかどうかを確認するには、レジストリにある
HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install
および
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3
と、存在する場合は値が1(インストール済みの場合)であるかどうかを、ブログ記事 Check if PowerShell installed and version で詳しく説明しています。
インストールされているPowerShellのバージョンを確認するには、レジストリキーの
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion
と
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion
.ps1 スクリプトからインストールされている PowerShell のバージョンを判断するには、PowerShell.com の [Which PowerShell Version Am I Running][2] で詳しく説明されているように、次のワンライナーを使用できます。
$isV2 = test-path variable:\psversiontable
同サイトでは、バージョンを返す関数も紹介されています。
function Get-PSVersion {
if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}
[2]: http://powershell.com/cs/blogs/tips/archive/2009/09/11/which-powershell-version-am-i-running.aspx
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
ソースはこちら本サイトをご覧ください。