我们有一个部署脚本失败,并显示错误消息:没有足够的配额可用于处理此命令。
在失败时,它会在已经启动同一个可执行文件 10 次后尝试异步启动可执行文件。所以11号失败了。总共需要启动17个。此脚本不是用 PowerShell 编写的,但我们使用远程 PowerShell 会话来启动它,并且此错误仅在我们通过 PowerShell 远程处理运行脚本时发生。
如果我们直接在服务器上运行相同的脚本而不使用 PowerShell 远程处理,则不会收到此错误,并且脚本启动 exe 的所有实例(总共 17 个(并完成没有错误没有问题。
我已经检查了我怀疑可能是错误原因的典型WSMAN限制,据我所知,它们被设置为无限制。起初我想也许MaxProcessesPerShell设置得太低了。下面是运行此驱动器的服务器上 WSMAN 驱动器的结果:
我们目前有以下 WSMAN 设置:
> WSMan:localhostShell> dir
WSManConfig: Microsoft.WSMan.ManagementWSMan::localhostShell
Type Name SourceOfValue Value
---- ---- ------------- -----
System.String AllowRemoteShellAccess true
System.String IdleTimeout 7200000
System.String MaxConcurrentUsers 2147483647
System.String MaxShellRunTime 2147483647
System.String MaxProcessesPerShell 2147483647
System.String MaxMemoryPerShellMB 2147483647
System.String MaxShellsPerUser 2147483647
是否有任何其他PowerShell或WSMAN设置可能是导致此错误的原因?
对于">配额不足...">错误,建议的典型解决方案涉及使页面文件变大。我还没有尝试过,因为脚本在PowerShell会话之外运行没有错误。
如果需要帮助回答这个问题,我可以提供有关我们的脚本正在做什么的更多细节。
导致我错误的配额限制是PowerShell 32位插件上的MaxProcessesPerShell设置。此设置独立于命令行管理程序设置。为了解决这个问题,我在远程PowerShell会话中运行了以下命令...
dir WSMan:localhostPluginmicrosoft.powershell32QuotasMaxProcessesPerShell
结果。。。
Type Name SourceOfValue Value
---- ---- ------------- -----
System.String MaxProcessesPerShell 15
将设置更改为 25,并...
Set-Item WSMan:localhostPluginmicrosoft.powershell32QuotasMaxProcessesPerShell 25
使用以下命令重新启动 WinRM 服务...
Restart-Service WinRM
尝试在此新配额生效的情况下再次运行问题脚本,现在它启动了 exe 的所有 17 个实例,没有任何错误。还有一个64位PowerShell插件,它也有自己的设置。
此解决方案已在此处找到 没有足够的配额可用于处理此命令