3

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

为了让事情变得更简单,我使用了管理单元“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 命令。

有任何想法吗?

4

1 回答 1

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
于 2012-10-24T01:37:35.027 回答