PowerShell的Invoke-Expression缺失参数

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PowerShell的Invoke-Expression缺失参数相关的知识,希望对你有一定的参考价值。

我以为我有PowerShell 2的最新CTP但是当我尝试命令时:

invoke-expression –computername Server01 –command 'get-process PowerShell'

我收到一条错误消息: 找不到与参数名称'computername'匹配的参数。

所以问题是:我怎么知道我安装了哪个版本的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仅用于将字符串转换为脚本;)

P.S。:如果你在v2上,你可以运行$PSVersionTable来查看包括CLR和Build版本的版本列表。

另一答案

$host.version.tostring()将返回版本号。

v1的RTM是1.0.0.0

不能老实告诉你预览的最新版本是什么,因为我还没有机会参加比赛。

另一答案

最新的CTP是在02/02/08发布的CTP2,可以找到here。远程处理需要在呼叫计算机和目标计算机上安装WinRM。 CTP中包含一个配置WS-Management的脚本,名为Configure-WSMan.ps1。

此命令应该为您提供已安装的PowerShell的版本号。 Get-Command“$ PSHome powershell.exe”| Format-List 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"}  
} 

以上是关于PowerShell的Invoke-Expression缺失参数的主要内容,如果未能解决你的问题,请参考以下文章

powershell 测量PowerShell命令或PowerShell脚本的速度

powershell 如何定时执行 ps1

powershell远程下载exe并执行

windows powershell 怎么使用啊,是干啥用的

powershell报错?

Windows PowerShell ISE 是什么和 PowerShell 有什么区别