在 Windows PowerShell 中,如何设置脚本使用的最大 CPU %?

5 cpu powershell

我希望将 PowerShell 进程使用的 CPU 时间百分比限制为某个数字——为了便于讨论,我们假设它是 13%。

其他选项并不完全是我需要的:1)设置优先级。2) 设置CPU亲和性。

基本上,我们有监控软件,如果 CPU 总使用率过高,它就会发出抱怨。我们有一个日常流程来引发这种情况——大多数情况下是无害的,但监控系统中存在太多误报,当我们不希望出现这种情况时,人们就会习惯于警告/错误。

该进程本身也让 lsass.exe 非常兴奋,因为它运行,并且其他进程也会发生。

我不了解 PowerShell,并且正在尝试修复其他人的 Powershell。显然,在未来的某个时刻进行彻底的重写会很好,但就目前而言,钟声已经敲响,并且令人烦恼。

Ric*_*erg 3

你所要求的实际上是不可能的。Windows 内核负责调度 CPU——这是理所当然的。(我不想回到实模式 DOS)。

您能做的最好的事情就是在脚本的每一行之间插入一个很长的 Sleep() 。但不能保证任何特定的 Powershell cmdlet/函数/等都会按照您想要的方式限制自身。最终执行每个语句的肮脏工作的 Windows API 调用当然不会。

讽刺的是,雷蒙德几天前谈到了这个话题:http://blogs.msdn.com/oldnewthing/archive/2009/07/27/9849503.aspx

我真正的建议是修改你的脚本,使其看起来像:

try {
    Stop-CpuMonitor

    # ...the current script contents...
}
finally {
    Start-CpuMonitor
}                
Run Code Online (Sandbox Code Playgroud)