使用Windows脚本更改进程的亲和力

Jua*_*blo 11 windows batch-file affinity

在Windows中,用

 START /node 1 /affinity ff cmd /C "app.exe"
Run Code Online (Sandbox Code Playgroud)

我可以设置app.exe的亲和力(app.exe使用的核心数).

使用Windows脚本,如何更改正在运行的进程的亲和力?

Dav*_*ann 15

PowerShell可以为您完成此任务

获得亲和力:

PowerShell "Get-Process app | Select-Object ProcessorAffinity"
Run Code Online (Sandbox Code Playgroud)

设置亲和力:

PowerShell "$Process = Get-Process app; $Process.ProcessorAffinity=255"
Run Code Online (Sandbox Code Playgroud)

示例:(8核处理器)

  • 核心# = Value = BitMask
  • 核心1 = 1 = 00000001
  • 核心2 = 2 = 00000010
  • 核心3 = 4 = 00000100
  • 核心4 = 8 = 00001000
  • 核心5 = 16 = 00010000
  • 核心6 = 32 = 00100000
  • 核心7 = 64 = 01000000
  • 核心8 = 128 = 10000000

只需将十进制值一起添加到您要使用的核心即可.255 =全部8个核心.

  • 所有核心= 255 = 11111111

示例输出:

C:\>PowerShell "Get-Process notepad++ | Select-Object ProcessorAffinity"

                                                              ProcessorAffinity
                                                              -----------------
                                                                            255



C:\>PowerShell "$Process = Get-Process notepad++; $Process.ProcessorAffinity=13"

C:\>PowerShell "Get-Process notepad++ | Select-Object ProcessorAffinity"

                                                              ProcessorAffinity
                                                              -----------------
                                                                             13



C:\>PowerShell "$Process = Get-Process notepad++; $Process.ProcessorAffinity=255"

C:\>
Run Code Online (Sandbox Code Playgroud)

资源:

这是一篇关于如何改变流程亲和力的详细文章:http: //www.energizedtech.com/2010/07/powershell-setting-processor-a.html

  • 第一个命令工作正常.但是对于第二个我得到这样的消息:"在该对象上找不到属性'ProcessorAffinity'.验证属性是否存在并且可以设置.在行:1 char:32 + $ Process = Get-Process chrome; $ Process .ProcessorAffinity = 1 + ~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:InvalidOperation:(:) [],RuntimeException + FullyQualifiedErrorId:PropertyAssignmentException" (5认同)

skj*_*rns 6

接受的答案有效,但仅适用于列表中的第一个进程。评论中的解决方案对我不起作用。

要更改所有同名进程的亲和性,请使用以下命令:

Powershell "ForEach($PROCESS in GET-PROCESS processname) { $PROCESS.ProcessorAffinity=255}"
Run Code Online (Sandbox Code Playgroud)

255接受的答案中给出的掩码在哪里。