PowerShell 是否有导致错误"没有足够的配额可用于处理此命令"的限制?



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

在失败时,它会在已经启动同一个可执行文件 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插件,它也有自己的设置。

此解决方案已在此处找到 没有足够的配额可用于处理此命令

最新更新