【发布时间】:2018-09-04 19:40:35
【问题描述】:
我们的部署脚本失败并显示错误消息:没有足够的配额可用于处理此命令。
当它失败时,它试图在已经启动同一个可执行文件 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 会话之外运行时没有错误。
如果需要帮助回答这个问题,我可以提供更多关于我们的脚本正在做什么的细节。
【问题讨论】:
-
这不是 PS 独有的,它发生的原因有很多。我知道您只能在远程会话中看到它。您是否在每次运行时释放所有定义的资源?如果没有,你应该,否则你可能有很多东西在咀嚼他们不应该拥有的资源。如果您多次运行此程序,您是否考虑过并行处理?工作流/运行空间
-
@postanote 据我所知,脚本启动的每个 exe 实例都会消耗资源,然后在每个 exe 实例退出时释放它们。我们正在使用并行处理。这就是为什么我们启动 17 个 exe 实例并等待它们全部完成的原因。我同意该错误似乎与 PowerShell 无关,但我们已反复尝试过此操作,并且仅在远程 PowerShell 会话中启动脚本时才会出现配额不足错误。我什至可以在服务器上使用 PowerShell 提示符运行脚本,并且它可以正常运行。
标签: powershell windows-server-2012-r2 wsman