Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/powershell/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
powershell远程处理Win2008R2“;WSMan服务无法启动主机进程来处理给定的请求;_Powershell_Windows Server 2008_Powershell 2.0_Powershell Remoting - Fatal编程技术网

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

powershell远程处理Win2008R2“;WSMan服务无法启动主机进程来处理给定的请求;,powershell,windows-server-2008,powershell-2.0,powershell-remoting,Powershell,Windows Server 2008,Powershell 2.0,Powershell Remoting,我最近将一些服务器从2003年升级到了2008R2。升级后,我开始看到以下错误: [servername]连接到远程服务器失败,错误消息如下:WSMan服务无法启动主机进程来处理给定的请求。确保WSMan提供程序主机服务器和代理已正确注册。有关更多信息,请参阅关于远程故障排除帮助主题 这个错误似乎是随机的。脚本将工作,然后失败。创建会话的命令位于循环中(创建会话、删除会话),并且作为一组部署脚本的一部分被多次调用。当脚本失败时,它会在不同的点失败 我已经检查了本地工作站(win7)目标服务器(w

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

[servername]连接到远程服务器失败,错误消息如下:WSMan服务无法启动主机进程来处理给定的请求。确保WSMan提供程序主机服务器和代理已正确注册。有关更多信息,请参阅关于远程故障排除帮助主题

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

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

这是随机失效的线路:

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

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


如果您能提供有关跟踪此问题的任何指导,我们将不胜感激。

您是否通过创建正在崩溃并使进程处于打开状态的pssessions来达到进程数量限制

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

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

您需要设置WSMS托管主机。如果需要,可以使用通配符(*)将其设置为“所有”

您可以通过PowerShell执行此操作:
设置项WSMan:\localhost\Client\TrustedHosts-Value*

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

您还可以使用Sysinternals中的PSExec工具。请记住,这些工具可能会被您的端点安全性阻止,所以不要忘记将其列为白名单


您将旧操作系统迁移到更新但仍为EOL操作系统的具体原因是什么?在2008R2中,你可以通过PowerShell做很多事情,但它仍然非常有限。在我看来,最好从2012R2及以后开始使用PowerShell。

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

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

默认情况下,PowerShell远程处理仅适用于管理员帐户,但可以配置为适用于非管理员帐户。从本版本开始,您无法将PowerShell远程终结点配置为使用非管理员帐户。尝试使用非管理员帐户时,将出现以下错误:“New PSSession:[computerName]连接到远程服务器localhost失败,错误消息如下:WSMan服务无法启动主机进程来处理给定的请求。请确保WSMan提供程序主机服务器和代理已正确注册。有关详细信息,请参阅关于远程疑难解答帮助主题。“


你每次都需要一个疗程吗?您不能使用“仅调用”命令生存吗?我也遇到了相同的错误,但运行的是Windows 2012。我的部署例程(在C#中,使用powershell API)经常会因此错误而失败。目前唯一的修复方法是重新启动我尝试连接的服务器(而不是我连接的服务器)。奇怪的是,这似乎发生在服务器负载数小时后(例如,生产服务器。负载为1/100的QA服务器不受影响)。系统驱动器上磁盘空间不足也会出现这些症状,我在C:驱动器上的空间已用完!