有很多例子显示了使用Get-Process myprocess
来改变处理器亲和力,还有一些例子使用Get-WMIObject
;但这些对我不起作用。我想在脚本执行时设置脚本的处理器关联。有没有办法在调用 powershell.exe 时或从脚本本身中声明处理器相关性?
我正在呼叫的exe在cygwin中;它似乎在开始使用cmd.exe /c start <command> /affinity 16
后改变了亲和力
这似乎对我有用,但我还没有测试过。 但是,它似乎更新了任务管理器看到的内容。
$thisProcess = [System.Diagnostics.Process]::GetCurrentProcess();
$thisProcess.ProcessorAffinity = 0x1;
ProcessorAffinity
是位掩码,因此0x1
是核心 1,0x2
是核心 2,0x4
是核心 3,0x8
是核心 4,依此类推。 如果要设置核心 1-4,它是 0xF
、核心 1-9、0x1FF
等。 我不认为有任何神奇的价值可以将其设置回"全部"。
你也可以使用 Get-Process -Id $pid
,因为$pid
是具有当前进程 PID 的自动变量。