取得執行於本機電腦或遠端電腦上的處理序。

語法

Get-Process [[-Name] <string[]>] [-ComputerName <string[]>] [-FileVersionInfo] [-Module] [<CommonParameters>]

Get-Process -Id <Int32[]> [-ComputerName <string[]>] [-FileVersionInfo] [-Module] [<CommonParameters>]

Get-Process -InputObject <Process[]> [-ComputerName <string[]>] [-FileVersionInfo] [-Module] [<CommonParameters>]

描述

Get-Process Cmdlet 取得執行於本機或遠端電腦上的處理序。

如果沒有參數,Get-Process 會取得本機電腦上的所有處理序。您也可以依據處理序名稱或是處理序識別碼 (PID) 指定特定的處理序,或是將處理序物件透過管線傳遞給 Get-Process。

根據預設,Get-Process 傳回擁有處理序詳細資訊的處理序物件,並且支援讓您開始與停止處理序的方法。您也可以使用 Get-Process 的參數,取得於處理序中執行之程式的檔案版本資訊,同時取得該處理序所載入的模組。

參數

-ComputerName <string[]>

取得於指定電腦上執行的處理序。預設為本機電腦。

請輸入一台或多台電腦的 NetBIOS 名稱、IP 位址或完整網域名稱。若要指定本機電腦,請輸入電腦名稱、句點 (.) 或 "localhost"。

此參數並不依存於 Windows PowerShell 遠端。即使沒有將電腦設定成執行遠端命令,也可以使用 Get-Process 的 ComputerName 參數。

必要?

false

位置?

named

預設值

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

false

-FileVersionInfo

取得於處理序中執行之程式的檔案版本資訊。

在 Windows Vista 與較新版本的 Windows 上,若要在不屬於您的處理序上使用這個參數,必須利用 [以系統管理員身分執行] 選項開啟 Windows PowerShell。

使用這個參數等同於取得每一個處理序物件的 MainModule.FileVersionInfo 屬性。當您使用這個參數時,Get-Process 會傳回 FileVersionInfo 物件 (System.Diagnostics.FileVersionInfo),而不是處理序物件。因此,您無法經由管道將命令輸出傳遞給預期處理序物件的 Cmdlet,例如 Stop-Process。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Id <Int32[]>

指定一個或多個處理序的處理序識別碼 (PID)。若要指定多個識別碼,請使用逗號來分隔識別碼。若要尋找處理序的 PID,請輸入 "get-process"。

必要?

true

位置?

named

預設值

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

false

-InputObject <Process[]>

指定一個或多個處理序物件。請輸入包含物件的變數,或輸入可取得物件的命令或運算式。

必要?

true

位置?

named

預設值

接受管線輸入?

true (ByValue)

接受萬用字元?

false

-Module

取得已經由處理序載入的模組。

在 Windows Vista 與較新版本的 Windows 上,若要在不屬於您的處理序上使用這個參數,必須利用 [以系統管理員身分執行] 選項開啟 Windows PowerShell。

這個參數等同於取得每一個處理序物件的 Modules 屬性。當您使用這個參數時,Get-Process 會傳回 ProcessModule 物件 (System.Diagnostics.ProcessModule),而不是處理序物件。因此,您無法經由管道將命令輸出傳遞給預期處理序物件的 Cmdlet,例如 Stop-Process。

如果在同一個命令中同時使用 Module 與 FileVersionInfo 參數,則 Get-Process 會傳回包含所有模組檔案版本資訊的 FileVersionInfo 物件。

必要?

false

位置?

named

預設值

接受管線輸入?

false

接受萬用字元?

false

-Name <string[]>

指定一個或多個處理序的處理序名稱。可輸入多個處理序名稱 (以逗號分隔) 或使用萬用字元。參數名稱 ("Name") 為選擇項。

必要?

false

位置?

1

預設值

接受管線輸入?

true (ByPropertyName)

接受萬用字元?

true

<CommonParameters>

這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.

輸入和輸出

輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。

輸入

System.Diagnostics.Process

您可以透過管線將處理序物件傳遞給 Get-Process。

輸出

System.Diagnostics.Process、System.Diagnotics.FileVersionInfo、System.Diagnostics.ProcessModule

根據預設,Get-Process 會傳回 System.Diagnostics.Process 物件。如果使用 FileVersionInfo 參數,則會傳回 System.Diagnotics.FileVersionInfo 物件。如果使用 Module 參數 (而沒有 FileVersionInfo 參數),則會傳回 System.Diagnostics.ProcessModule 物件。

附註

不能在同一個命令中同時使用 Name、ID 和 InputObject 參數。

您也可以利用 Get-Process 的內建別名 ("ps" 和 "gps") 對其進行參照。如需詳細資訊,請參閱 about_Aliases。

在 Windows PowerShell 中亦可使用 WMI Win32_Process 物件的屬性和方法。如需詳細資訊,請參閱 Get-WmiObject 與 Windows Management Instrumentation (WMI) SDK。

處理序的預設顯示方式是包含下列欄位的表格:

-- 控制碼:處理序已開啟的控制碼數目。

-- NPM(K):處理序正在使用的未分頁記憶體大小 (以 KB 為單位)。

-- PM(K):處理序正在使用的可分頁記憶體大小 (以 KB 為單位)。

-- WS(K):處理序的工作組大小 (以 KB 為單位)。工作組是由處理序最近所參照的記憶體分頁所組成。

-- VM(M):處理序正在使用的虛擬記憶體大小 (以 MB 為單位)。虛擬記憶體包括磁碟上分頁檔案中的存放區。

-- CPU(s):處理序已用於所有處理器的處理器時間長短 (以秒鐘為單位)。

-- ID:處理序的處理序識別碼 (PID)。

-- ProcessName:處理序名稱。

如需與處理序有關的概念說明,請參閱 [說明及支援中心] 的 [字彙] 和工作管理員的說明。

您也可以使用 Format-Table 內建的其他處理序檢視,例如 "StartTime" 和 "Priority",而且您可以設計自己的檢視。如需詳細資訊,請參閱 Format-Table。

範例 1

C:\PS>Get-Process

描述
-----------
這個命令會取得所有正在本機電腦上執行的處理序清單。如需每一欄的定義,請參閱 Get-Help 之說明主題的<其他注意事項>一節。






範例 2

C:\PS>Get-Process winword, explorer | format-list *

描述
-----------
這個命令會取得電腦上 Winword 和 Explorer 處理序的所有可用相關資料。它使用 Name 參數指定處理序,不過省略了選擇性的參數名稱。管線運算子 (|) 將資料傳遞給 Format-List Cmdlet,並由其顯示 Winword 和 Explorer 處理序物件的所有可用屬性 (*)。

您也可以依據處理序識別碼來識別處理序。例如,"get-process -id 664, 2060"。






範例 3

C:\PS>get-process | where-object {$_.WorkingSet -gt 20000000}

描述
-----------
這個命令會取得所有工作組超過 20 MB 的處理序。它會使用 Get-Process Cmdlet 取得所有正在執行的處理序。管線運算子 (|) 會將處理序物件傳遞給 Where-Object Cmdlet,此 Cmdlet 只會選取 WorkingSet 屬性值超過 20,000,000 位元組的物件。

WorkingSet 是處理序物件眾多屬性的其中之一。若要查看所有屬性,請輸入 "Get-Process | Get-Member"。依預設,所有關於大小屬性的值都是以位元組為單位,即使預設顯示列出這些值時是以 KB 和 MB 為單位。






範例 4

C:\PS>$a = get-process

C:\PS> get-process -inputobject $a | format-table -view priority

描述
-----------
這些命令會根據優先順序的類別,依群組列出電腦中處理序。

第一個命令會取得電腦上的所有處理序,然後將它們儲存於 $a 變數。

第二個命令使用 InputObject 參數,將儲存於 $a 變數中的處理序物件傳遞到 Get-Process Cmdlet。管線運算子將物件傳遞給 Format-Table Cmdlet,該 Cmdlet 會利用 [優先順序] 檢視格式化處理序。

優先順序檢視與其他檢視會定義於位在 Windows PowerShell 主目錄 ($pshome) 的 PS1XML 格式檔案中。






範例 5

C:\PS>get-process powershell -computername S1, localhost | ft @{Label="NPM(K)";Expression={[int]($_.NPM/1024)}}, @{Label="PM(K)";Expression={[int]($_.PM/1024)}},@{Label="WS(K)";Expression={[int]($_.WS/1024)}},@{Label="VM(M)";Expression={[int]($_.VM/1MB)}}, @{Label="CPU(s)";Expression={if ($_.CPU -ne $()) { $_.CPU.ToString("N")}}}, Id, MachineName, ProcessName -auto


NPM(K) PM(K) WS(K) VM(M) CPU(s)   Id MachineName ProcessName
------ ----- ----- ----- ------   -- ----------- -----------
     6 23500 31340   142        1980 S1          powershell
     6 23500 31348   142        4016 S1          powershell
    27 54572 54520   576        4428 localhost   powershell

描述
-----------
這個範例提供 Format-Table (alias = ft) 命令,會將 MachineName 屬性新增到標準的 Get-Process 輸出顯示。






範例 6

C:\PS>get-process powershell -fileversioninfo

ProductVersion   FileVersion      FileName
--------------   -----------      --------
6.1.6713.1       6.1.6713.1 (f... C:\WINDOWS\system32\WindowsPowerShell\v1.0\powershell.exe

描述
-----------
這個命令使用 FileVersionInfo 的參數,取得屬於 PowerShell 處理序主模組之 PowerShell.exe 檔案的版本資訊。

在 Windows Vista 與較新版本的 Windows 上,若要利用不屬於您的處理序執行這個命令,必須利用 [以系統管理員身分執行] 選項開啟 Windows PowerShell。






範例 7

C:\PS>get-process sql* -module

描述
-----------
這個命令使用 Module 參數取得已經由處理序載入的模組。這個命令會為名稱以 "sql" 開頭的所有處理序取得模組。

在 Windows Vista (與較新版本的 Windows) 上,若要利用不屬於您的處理序執行使用這個命令,必須利用 [以系統管理員身分執行] 選項啟動 Windows PowerShell。






範例 8

C:\PS>$p = get-wmiobject win32_process -filter "name='powershell.exe'"

C:\PS> $p.getowner()

__GENUS          : 2
__CLASS          : __PARAMETERS
__SUPERCLASS     :
__DYNASTY        : __PARAMETERS
__RELPATH        :
__PROPERTY_COUNT : 3
__DERIVATION     : {}
__SERVER         :
__NAMESPACE      :
__PATH           :
Domain           : DOMAIN01
ReturnValue      : 0
User             : user01

描述
-----------
這個命令顯示如何尋找處理序的擁有者。因為 Get-Process 傳回的 System.Diagnostics.Process 物件沒有會傳回處理序擁用者的屬性或方法,所以該命令使用
 Get-WmiObject Cmdlet 取得代表相同處理序的 Win32_Process 物件。

第一個命令使用 Get-WmiObject 取得 PowerShell 處理序。並將其儲存在 $p 變數中。

第二個命令使用 GetOwner 方法取得 $p 中的處理序擁有者。該命令會顯示擁有者為 Domain01\user01。






範例 9

C:\PS>get-process powershell

C:\PS> get-process -id $pid

C:\PS> get-process powershell

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    308      26    52308      61780   567     3.18   5632 powershell
    377      26    62676      63384   575     3.88   5888 powershell


C:\PS> get-process -id $pid

Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
-------  ------    -----      ----- -----   ------     -- -----------
    396      26    56488      57236   575     3.90   5888 powershell

描述
-----------
這些命令顯示如何使用 $pid 自動變數識別主控目前 Windows PowerShell 工作階段的處理序。您可以使用這個方法,分辨主機處理序與您想要停止或關閉的其他 PowerShell 處理序。

第一個命令取得目前工作階段中的所有 PowerShell 處理序。

第二個命令取得主控目前工作階段中的 PowerShell 處理序。






請參閱




目錄