簡體   English   中英

PowerShell 3.0-為每個用戶的進程設置與CPU的關聯性

[英]PowerShell 3.0 - Setting Affinity to CPU per USER's PROCESS

我的第一篇文章在這里。 我正在使用powerShell編寫腳本,目標是為每個USER進程設置一定數量的CPU線程,在這里使用論壇,我能夠找到大多數答案,甚至可以運行我的腳本,除了,如果設置親和力,則將其設置為“每個進程”,而不僅僅是我需要的用戶。 這是代碼(帶注釋):

# GET LIST of all process running
$pList = get-wmiobject win32_process

# loop through created array and get the OWNER of the processes
foreach ($p in $pList) {
    #If "myUserName" is found:
    if ($p.getowner().User -eq 'myUserName') {
        # get process name
        $procName = $p.ProcessName
        # trim STRING to remove EXE
        $procName = $procName.Replace('.exe','')
        # use get-process to make array of processes run by "myUserName"
        $activeProc = Get-Process -name $procName
        # Loop to set affinity for each process

        foreach ($i in $activeProc){
            $i.ProcessorAffinity=0xFE
        }
    }
}

當我執行此命令時,所有過程都設置為新的線程數,有什么建議如何使其僅為特定用戶調整線程?

非常感謝你們! 這非常緊急。

通過調用get-process -name $procName您將找到與用戶運行的名稱相同的所有進程。

不要使用ProcessName ,而要使用ProcessId

在PowerShell版本4.0中,可以在Get-Process cmdlet上使用-IncludeUserName參數。 有了進程列表后,可以進行過濾,然后使用Where-Object cmdlet(默認別名為?

Get-Process -IncludeUserName | Where-Object -FilterScript { $PSItem.UserName -match 'system' };

或簡寫如下:

gps -inc | ? { $_.UserName -match 'system' };

注意 :使用-IncludeUserName參數需要特權提升。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM