我以为我有最新的 PowerShell 2 CTP,但是当我尝试命令时:
invoke-expression –computername Server01 –command 'get-process PowerShell'
我收到一条错误消息:
找不到与参数名称“计算机名”匹配的参数。
所以问题是:如何知道我安装了哪个版本的 PowerShell?最新版本是什么?
我以为我有最新的 PowerShell 2 CTP,但是当我尝试命令时:
invoke-expression –computername Server01 –command 'get-process PowerShell'
我收到一条错误消息:
找不到与参数名称“计算机名”匹配的参数。
所以问题是:如何知道我安装了哪个版本的 PowerShell?最新版本是什么?
从昨晚的构建开始(这意味着您可能在 CTP3 中拥有它,但如果没有,您将在下一次公开发布中获得它):
[4120:0]PS> $psversiontable
Name Value
---- -----
CLRVersion 2.0.50727.3521
BuildVersion 6.1.7047.0
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.0
实验!享受!从事!
Jeffrey Snover [MSFT] Windows 管理合作伙伴架构师
问题是,从 CTP 1 到 CTP2,他们切换了 Invoke 的东西,所有远程处理的东西现在都完成Invoke-Command
了,并且Invoke-Expression
只是为了将字符串转换为脚本;)
PS:如果您使用的是 v2,您可以运行$PSVersionTable
以查看版本列表,包括 CLR 和 Build 版本。
$host.version.tostring()
将返回版本号。
v1 的 RTM 为 1.0.0.0
不能诚实地告诉你最新版本的预览是什么,因为我还没有机会玩。
最新的 CTP 是 2008 年 5 月 2 日发布的 CTP2,可以在这里找到。远程处理需要在调用机器和目标机器上都安装 WinRM。CTP 中包含一个用于配置 WS-Management 的脚本,称为 Configure-WSMan.ps1。
此命令应为您提供已安装的 PowerShell 版本号。获取命令“$PSHome\powershell.exe”| 格式列表 FileVersionInfo V1.0 是 6.0.5430.0 CTP2 是 6.1.6585.1
我手头没有第一个 CTP 的版本号,但如果你真的需要,我可以找到它。
我猜这是在配置过程 Configure-Wsman.ps1 期间对 cmdlet 所做的更改。我现在没有要测试的环境设置,但我猜配置出了点问题。我可以验证在 XP 上该参数不可用(duh)。我假设您会在没有完成配置的情况下在 Vista/08 上找到相同的内容。
如果$PSVersionTable
变量不存在,那么您正在运行 V1。
如果存在,则该版本将作为$PSVersionTable.PSVersion
.
function Get-PSVersion {
if (test-path variable:psversiontable)
{$psversiontable.psversion}
else
{[version]"1.0.0.0"}
}