我们正在向仅在 Powershell 2.0 中工作的客户端提供脚本。
通过命令我们可以确保 powershell 2.0 安装如下
$version = Get-host | Select-object Version
但是,如果我们提供脚本,如何确保它们是从 Powershell 2.0 执行的呢?
在执行脚本时,Powershell 2.0 的特性可能会在启动脚本本身时给出脚本错误。不是吗?
我们正在向仅在 Powershell 2.0 中工作的客户端提供脚本。
通过命令我们可以确保 powershell 2.0 安装如下
$version = Get-host | Select-object Version
但是,如果我们提供脚本,如何确保它们是从 Powershell 2.0 执行的呢?
在执行脚本时,Powershell 2.0 的特性可能会在启动脚本本身时给出脚本错误。不是吗?
您可以使用注释您的脚本#requires
并声明它不应在低于 PowerShell v2 的任何设备上运行:
#requires -Version 2.0
(旁注:即使您模糊地知道它存在,也很难找到它。)
依赖主机版本并不是最安全的做法,因为脚本可以在主机版本与 PowerShell 版本不同的主机上运行。
$PSVersionTable 变量是在 v2 中添加的。您可以检查变量是否存在,如果存在则您正在运行 v2 及更高版本,您还可以检查 PSVersion.Major 属性:
if($PSVersionTable)
{
'PowerShell {0}' -f $PSVersionTable.PSVersion.Major
}
else
{
'PowerShell 1'
}
我会做这样的事情:
# 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
希望这可以帮助!
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