有没有办法在执行前设置 powershell 脚本的处理器亲和力?

Is there any way to set processor affinity of a powershell script before execution?

有很多示例展示了如何使用 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 等。我认为将其设置回 "All" 没有任何神奇的价值。

您也可以使用 Get-Process -Id $pid,因为 $pid 是一个带有当前进程 PID 的自动变量。