10

我最近将一些服务器从 2003 升级到 2008R2。自升级以来,我开始看到以下错误:

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

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

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

这是随机失败的行:

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

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

任何有关追踪此问题的指导将不胜感激。

4

3 回答 3

2

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

过去可以使用非管理员帐户,但 2019 年 1 月的 Windows 更新出于安全原因禁用了该功能。从补丁说明

默认情况下,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 帮助主题。”</p>

于 2021-01-30T11:33:21.267 回答
1

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

您可以通过 PowerShell 进行操作:Set-Item WSMan:\localhost\Client\TrustedHosts -Value *.

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

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

您将旧操作系统迁移到更新但仍处于停产状态的操作系统是否有特定原因?在 2008R2 中,您可以通过 PowerShell 做很多事情,但它仍然非常有限。IMO,最好从 2012R2 及以后开始使用 PowerShell。

于 2020-04-06T07:46:49.110 回答
0

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

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

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 并重试。如果脚本不再失败,您就知道这是问题所在(并且应该考虑转向调用命令!)。

于 2014-01-23T15:42:42.347 回答