我们有一个失败的部署脚本,并显示错误消息:没有足够的配额可用于处理此命令。
在它失败的时候,它尝试在已经启动相同的可执行文件10次之后异步启动可执行文件。所以11号失败了。总共需要启动17个。此脚本不是在PowerShell中编写的,但我们使用远程PowerShell会话来启动它,只有在我们通过PowerShell远程处理运行脚本时才会出现此错误。
如果我们直接在服务器上运行相同的脚本而不使用PowerShell远程处理,我们不会收到此错误,并且脚本在启动exe的所有实例(总共17个)并且没有错误地完成时没有问题。
我已经检查了我怀疑可能导致错误的典型WSMAN限制,据我所知,它们被设置为无限制。起初我以为MaxProcessesPerShell可能设置得太低了。以下是运行此命令的服务器上的WSMAN驱动器的结果:
我们目前有这些WSMAN设置:
> WSMan:\localhost\Shell> dir
WSManConfig: Microsoft.WSMan.Management\WSMan::localhost\Shell
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设置可能导致此错误?
建议用于Not enough quota ...错误的典型解决方案涉及使页面文件更大。我还没有尝试过,因为脚本在PowerShell会话之外运行时没有错误。
如果需要帮助回答这个问题,我可以提供更多关于脚本正在做什么的细节。
导致我的错误的配额限制是PowerShell 32位插件上的MaxProcessesPerShell设置。此设置与Shell设置无关。为了解决这个问题,我在远程PowerShell会话中运行了以下命令...
dir WSMan:\localhost\Plugin\microsoft.powershell32\Quotas\MaxProcessesPerShell
结果...
Type Name SourceOfValue Value
---- ---- ------------- -----
System.String MaxProcessesPerShell 15
用...更改设置为25
Set-Item WSMan:\localhost\Plugin\microsoft.powershell32\Quotas\MaxProcessesPerShell 25
用...重新启动WinRM服务
Restart-Service WinRM
尝试使用此新配额再次运行问题脚本,它现在启动exe的所有17个实例,没有任何错误。还有一个64位PowerShell插件,它也有自己的设置。
这个解决方案在这里找到Not enough quota is available to process this command