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

ric*_*rth 8 powershell powershell-2.0 windows-server-2008 powershell-remoting

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

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

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

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

这是随机失败的行:

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

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

任何关于追踪这个问题的指导都将非常感激.

小智 0

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

默认限制是 15。我同意上面的评论并且不使用会话,而是使用调用命令,例如:

invoke-command -scriptblock $scriptBlock -ArgumentList $args -computername $compName -Credential $encodedRemoteCredentials
Run Code Online (Sandbox Code Playgroud)

检查您的限额:

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


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

Name                      Value
----                      ----
MaxProcessesPerShell      15
Run Code Online (Sandbox Code Playgroud)

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