PowerShell远程处理Win2008R2“WSMan服务无法启动主机进程来处理给定的请求”

时间:2012-01-05 18:59:48

标签: powershell windows-server-2008 powershell-v2.0 powershell-remoting

我最近从2003年到2008年升级了许多服务器。自升级以来,我开始看到以下错误:

  

[servername]连接到远程服务器失败,并显示以下错误消息:WSMan服务无法启动主机进程来处理给定的请求。确保正确注册了WSMan提供程序主机服务器和代理。有关详细信息,请参阅about_Remote_Troubleshooting帮助主题。

错误似乎是随机的。该脚本将工作,然后失败。创建会话的命令处于循环中(创建会话,删除会话),并且作为一组部署脚本的一部分被多次调用。当脚本失败时,它会在不同的点失败。

我已经检查了本地工作站(win7)目标服务器(win2008R2)上的事件日志,但没有我能看到的错误。

这是随机失败的行:

  

$ session = New-PSSession -ComputerName $ serverName -Credential $ credential

我在Win2003上没有看到这个问题。脚本没有改变。我假设问题出在目标服​​务器上,但无法找到任何错误或日志来查看。它将工作一次然后失败,因此我的部署脚本有时会成功,然后在不同的点失败。

非常感谢有关追踪此问题的任何指导。

3 个答案:

答案 0 :(得分:1)

您需要设置WSMan TrustedHosts。如果需要,可以使用通配符(*)将其设置为所有内容。

您可以通过PowerShell:Set-Item WSMan:\localhost\Client\TrustedHosts -Value *

请记住,您还需要启用Windows远程服务。为此,请使用本机winrm qc命令。 Enable-PSRemoting -Force也可以这样做。

您还可以使用Sysinternals的PSExec工具。请记住,这些工具可能会被EndPoint Security阻止,因此请不要将其列入白名单。

是否有特定原因将旧操作系统迁移到较新的版本,但仍是EOL操作系统?您可以在2008R2中通过PowerShell进行很多操作,但是仍然非常有限。 IMO,从2012R2开始,最好使用PowerShell。

答案 1 :(得分:0)

您是否通过创建崩溃并让进程保持打开状态的pssessions来达到进程数限制?

默认限制为15.我同意上述注释而不使用会话,而是使用invoke-command,如:

invoke-command -scriptblock $scriptBlock -ArgumentList $args -computername $compName -Credential $encodedRemoteCredentials

检查你的限制:

PS C:\aws> ls WSMan:\localhost\Shell


   WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Shell

Name                      Value
----                      ----
MaxProcessesPerShell      15

作为快速而肮脏的测试 - 下次您的pssession版本的脚本失败时,使用set-item cmdlet将maxProcessesPerShell限制增加到50并重试。如果脚本不再失败,您就知道这是问题(并且应该考虑转移到invoke-command!)。

答案 2 :(得分:0)

尝试使用非管理员帐户连接到 localhost 时,您可能会收到此错误。

过去可以使用不是管理员的帐户,但出于安全原因,2019 年 1 月的 Windows 更新禁用了该功能。来自patch notes

<块引用>

默认情况下,PowerShell 远程处理仅适用于管理员帐户,但可以配置为使用非管理员帐户。从此版本开始,您无法将 PowerShell 远程端点配置为使用非管理员帐户。尝试使用非管理员帐户时,将出现以下错误:“New-PSSession: [computerName] Connecting to remote server localhost failed with the following error message: The WSMan service could not launch a host process to process the given request .确保 WSMan 提供程序主机服务器和代理已正确注册。有关详细信息,请参阅 about_Remote_Troubleshooting 帮助主题。”