Windows + Powershell: como alterar a afinidade do processador para todas as instâncias java.exe?

0

Com base no esta pergunta no StackOverflow, posso para alterar a afinidade do processador se um executável estiver sendo executado apenas em uma instância com este comando:

PowerShell "$Process = Get-Process java; $Process.ProcessorAffinity=11"

Se 2 ou mais instâncias estiverem em execução, não posso alterar e esta é a saída

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

Alguém sabe como alterar a afinidade do processador para todas as instâncias do java.exe usando o Powershell?

    
por adamitj 08.12.2016 / 15:37

1 resposta

3

Você precisa fazer um loop sobre cada objeto para definir seu ProcessorAffinity

| % {} no PowerShell significa ForEach-Object e é basicamente o mesmo que uma instrução foreach() em outros idiomas

como root disse, você pode remover a variável para que seu código fique mais curto.

de uma janela cmd:

PowerShell "get-process java | % { $_.ProcessorAffinity=11 }"

em um arquivo de lote (o arquivo de lote processa % como uma variável, portanto, é necessário escrevê-lo duas vezes ou alternar para foreach ):

PowerShell "get-process java | %% { $_.ProcessorAffinity=11 }"
PowerShell "get-process java | foreach { $_.ProcessorAffinity=11 }"

diretamente no PowerShell:

get-process java | % { $_.ProcessorAffinity=11 }
    
por 08.12.2016 / 16:37