Windows + Powershell:如何更改所有 java.exe 实例的处理器亲和性?

Windows + Powershell:如何更改所有 java.exe 实例的处理器亲和性?

基于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 }

相关内容