我最近从2003年到2008年升级了许多服务器。自升级以来,我开始看到以下错误:
[servername]连接到远程服务器失败,并显示以下错误消息:WSMan服务无法启动主机进程来处理给定的请求。确保正确注册了WSMan提供程序主机服务器和代理。有关详细信息,请参阅about_Remote_Troubleshooting帮助主题。
错误似乎是随机的。该脚本将工作,然后失败。创建会话的命令处于循环中(创建会话,删除会话),并且作为一组部署脚本的一部分被多次调用。当脚本失败时,它会在不同的点失败。
我检查了本地工作站(win7)目标服务器(win2008R2)上的事件日志,但没有我能看到的错误。
这是随机失败的行:
$ session = New-PSSession -ComputerName $ serverName -Credential $ credential
我在Win2003上没有看到这个问题。脚本没有改变。我假设问题出在目标服务器上,但无法找到任何错误或日志来查看。它将工作一次然后失败,因此我的部署脚本有时会成功,然后在不同的点失败。
任何关于追踪这个问题的指导都将非常感激。
您是否通过创建崩溃并使进程保持打开状态的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!)。