Get-Process
取得執行於本機電腦或遠端電腦上的處理序。
語法
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 處理序。
請參閱
概念
Get-Process
Start-Process
Stop-Process
Wait-Process
Debug-Process