1

我们有一个部署脚本失败并显示错误消息:没有足够的配额可用于处理此命令。

在它失败的地方,它试图在已经启动同一个可执行文件 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 会话之外运行时没有错误。

如果需要帮助回答这个问题,我可以提供更多关于我们的脚本正在做什么的细节。

4

1 回答 1

1

导致我的错误的配额限制是 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

尝试在这个新配额生效的情况下再次运行问题脚本,它现在启动了所有 17 个 exe 实例,没有任何错误。还有一个 64 位 PowerShell 插件,它也有自己的设置。

在这里找到了这个解决方案没有足够的配额来处理这个命令

于 2018-09-05T15:32:37.137 回答