9

我们正在向仅在 Powershell 2.0 中工作的客户端提供脚本。

通过命令我们可以确保 powershell 2.0 安装如下

$version = Get-host | Select-object Version

但是,如果我们提供脚本,如何确保它们是从 Powershell 2.0 执行的呢?

在执行脚本时,Powershell 2.0 的特性可能会在启动脚本本身时给出脚本错误。不是吗?

4

4 回答 4

13

您可以使用注释您的脚本#requires并声明它不应在低于 PowerShell v2 的任何设备上运行:

#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

Try to use $PSVersionTable

You will get something like:

    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 回答