9

Powershell2.0でのみ機能するスクリプトをクライアントに提供しています。

コマンドを使用して、PowerShell2.0が次のようにインストールされていることを確認できます

$version = Get-host | Select-object Version

しかし、スクリプトを提供する場合、Powershell2.0からスクリプトを実行していることを確認する方法はありますか?

スクリプトを実行すると、Powershell 2.0の機能により、スクリプト自体の開始時にスクリプトエラーが発生する場合があります。

4

4 に答える 4

13

スクリプトに注釈を付けて#requires、PowerShellv2より前のスクリプトで実行しないように指定できます。

#requires -Version 2.0

(補足:これが存在することを漠然と知っていても、これを見つけるのは驚くほど困難です。)

于 2012-08-02T06:17:43.537 に答える
2

スクリプトはPowerShellのバージョンと同じホストバージョンを持たないホストで実行できるため、ホストバージョンに依存することは最も安全な方法ではありません。

$PSVersionTable変数はv2で追加されました。変数が存在するかどうかを確認できます。v2以降を実行している場合は、PSVersion.Majorプロパティも確認できます。

if($PSVersionTable)
{
    'PowerShell {0}' -f $PSVersionTable.PSVersion.Major
}
else
{
   'PowerShell 1'
}
于 2012-08-02T06:03:20.977 に答える
2

私はこのようなことをします:

# get version
$ver = $PsVersionTable.psversion.major
 # Check to see if it's V2

If ($ver -NE 2) 
   {"incorrect version - exiting; return}
# Everything that follows is V2

お役に立てれば!

于 2012-08-02T12:23:11.850 に答える
0

使用してみてください$PSVersionTable

次のようなものが得られます:

    Name                           Value
    ----                           ----- 
CLRVersion                     2.0.50727.5456 
BuildVersion                   6.1.7601.17514 
PSVersion                      2.0 
WSManStackVersion              2.0 
PSCompatibleVersions           {1.0, 2.0} 
SerializationVersion           1.1.0.1 
PSRemotingProtocolVersion      2.1
于 2012-08-02T05:49:16.107 に答える