基于这StackOverflow 上的问题,如果可执行文件仅在 1 个实例中运行,我可以使用以下命令更改处理器亲和性:
PowerShell "$Process = Get-Process java; $Process.ProcessorAffinity=11"
如果有两个或更多实例正在运行,则无法更改,这是输出
C:\PowerShell "$Process = Get-Process java; $Process.ProcessorAffinity=11"
The property 'ProcessorAffinity' cannot be found on this object. Verify that the property exists and can be set.
At line:1 char:30
+ $Process = Get-Process java; $Process.ProcessorAffinity=11
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: (:) [], RuntimeException
+ FullyQualifiedErrorId : PropertyAssignmentException
有谁知道如何使用 Powershell 更改所有 java.exe 实例的处理器亲和性?
答案1
你必须循环遍历每个对象来设置它的ProcessorAffinity
| % {}
在 PowerShell 中的含义与其他语言中的语句ForEach-Object
基本相同foreach()
正如 root 所说,您可以删除变量,这样您的代码就会变得更短。
从 cmd 窗口:
PowerShell "get-process java | % { $_.ProcessorAffinity=11 }"
在批处理文件中(批处理文件%
像变量一样处理,因此您需要写入 2 次或切换到foreach
):
PowerShell "get-process java | %% { $_.ProcessorAffinity=11 }"
PowerShell "get-process java | foreach { $_.ProcessorAffinity=11 }"
直接在 PowerShell 中:
get-process java | % { $_.ProcessorAffinity=11 }