如何通过Invoke-Command在远程计算机上调用Powershell版本2

时间:2012-10-24 00:10:33

标签: powershell version invoke-command snap-in

我正在尝试使用PowerShell在Web服务器上远程设置网站。我正在尝试配置的Web服务器是Windows Server 2008 R2 SP1,默认情况下它上面有PowerShell v2。

为了方便起见,我正在使用Snapin“WebAdministration”。

每当我尝试调用以下命令时:

PS C:\p4\eacp4wireframe\ReleaseEngineering\DL_Powershell\Infrastructure\PowerShell\IIS>     Invoke-Command -ComputerName web4 -Credential $admin -ScriptBlock {add-pssnapin     WebAdministration; Get-Website} 
No snap-ins have been registered for Windows PowerShell version 2.
+ CategoryInfo          : InvalidArgument: (WebAdministration:String) [Add-PSSnapin], PSArgumentException
+ FullyQualifiedErrorId : AddPSSnapInRead,Microsoft.PowerShell.Commands.AddPSSnapinCommand

我得到了可怕的“没有为Windows PowerShell版本2注册的管理单元”错误。

逻辑上,我通过运行以下命令来检查powershell的版本:

PS C:\ Invoke-Command -ComputerName web4 -Credential $admin -ScriptBlock {(Get-Host).version}
Major  Minor  Build  Revision PSComputerName                                                                                                                                                                   
-----  -----  -----  -------- --------------                                                                                                                                                                   
1      0      0      0        web4       

我可以远程登录到Web服务器并运行Powershell命令。

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

该版本号是远程处理所使用的主机实现的版本号,例如:

C:\PS> Invoke-Command . {Get-Host | Get-Member}


   TypeName: System.Management.Automation.Internal.Host.InternalHost

您必须至少使用PowerShell 2.0引擎,因为这是引入PowerShell Remoting的时候。您更有可能调用64位PowerShell远程端点,并且您有没有为64位PowerShell注册的快照,或者不能在64位PowerShell中运行(反之亦然)。

如果需要调用32位远程端点,请尝试以下方法:

C:\PS> Invoke-Command . {[intptr]::size} -ConfigurationName Microsoft.PowerShell32
4