So-net無料ブログ作成
検索選択
QLOOKアクセス解析

PowerShell のバージョン判別方法 [PowerShell]

忘れそうなので PowerShell のバージョン判別方法を整理しておくことにします。
(以下 Version 2 と書いてますが現時点では CTP 3 での確認のみ)

Version 2 からは PSVersionTable という変数が追加されており、
PS > $PSVersionTable

Name                           Value
----                           -----
CLRVersion                     2.0.50727.3053
BuildVersion                   6.1.6949.0
PSVersion                      2.0
PSCompatibleVersions           {1.0, 2.0}
のように確認可能です。

Version 1 にはこの変数は存在していなかったので、
Get-Variable で変数の存在を見分ければ Version 1 か
それより新しいのかを判別できます。
if (Get-Variable PSVersionTable -ErrorAction SilentlyContinue)
{
    # ある時:Version 2 ~
}
else
{
    # ない時:Version 1
}

他に、次のようにレジストリを見て PowerShellVersion の値を調べる方法もあります。
(Get-ItemProperty HKLM:\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine).PowerShellVersion
文字列として 1.0 もしくは 2.0 が戻ってきます。数値ではないので比較には注意しましょう。

どちらの方法がいいのでしょうね?
不存在を調べるのも、レジストリパスを書くのもどちらもあまり美しくないような気はします。

なお、Get-Host で PowerShell ホストのバージョンを取得可能で、
これも参考にはなるのですが、Hostの種類・バージョンと PowerShell の
バージョンは異なるので単純に判別できるわけではありません。

たとえば、標準コンソールの場合であれば
Name : ConsoleHost
Version : 1.0.0.0

あるいは
Name : ConsoleHost
Version : 2.0

になるのですが、PowerGUI の中だと
Name : PowerGUIScriptEditorHost
Version : 1.5.2.550
だったりします。





nice!(0)  コメント(1)  トラックバック(0) 
共通テーマ:パソコン・インターネット

nice! 0

コメント 1

ユーザA

わかりやすいなので、勉強になりました。
by ユーザA (2012-05-11 10:17) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この記事のトラックバックURL:
※言及リンクのないトラックバックは受信されません。
メッセージを送る
人気ブログランキングへ
 

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。