Get-Process
取得本地電腦上正在執行的程序。
語法
Name (預設值)
Get-Process
[[-Name] <String[]>]
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
NameWithUserName
Get-Process
[[-Name] <String[]>]
-IncludeUserName
[<CommonParameters>]
Id
Get-Process
-Id <Int32[]>
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
IdWithUserName
Get-Process
-Id <Int32[]>
-IncludeUserName
[<CommonParameters>]
InputObject
Get-Process
-InputObject <Process[]>
[-Module]
[-FileVersionInfo]
[<CommonParameters>]
InputObjectWithUserName
Get-Process
-InputObject <Process[]>
-IncludeUserName
[<CommonParameters>]
Description
指令檔會 Get-Process 將程序儲存在本地電腦上。
沒有參數時,這個指令檔會取得本地電腦上的所有程序。 你也可以透過程序名稱或程序 ID(PID),或是將 System.Diagnostics.Process 物件串接到這個 cmdlet 來指定特定程序。
預設情況下,此 cmdlet 會回傳一個包含詳細流程資訊並支援控制程序的方法的 Process 物件。 透過參數,你可以改變這個 cmdlet 回傳的資訊類型。
- 模組:擷取每個載入程序的模組資訊。
- FileVersionInfo:取得程序主模組的檔案版本資訊。
Note
模組是載入程序中的可執行檔案或動態連結函式庫(DLL)。 一個程序包含一個或多個模組。 主要模組是最初啟動流程的模組。 更多資訊請參見 ProcessModule 類別。
範例
範例 1:取得本機電腦上所有正在執行的程序清單
Get-Process
此指令會取得本地電腦上所有正在執行的程序清單。 關於每個顯示欄位的定義,請參閱 備註 章。
要查看 Process 物件的所有屬性,請使用 Get-Process | Get-Member。 預設情況下,PowerShell 會以千位元組(K)和兆位元組(M)等單位來顯示某些屬性值。 使用成員存取運算子(.)存取時,實際值以位元組為單位。
範例 2:顯示一個或多個流程的詳細資訊
Get-Process winword, explorer | Format-List *
此管線顯示電腦上關於 及winwordexplorer程序的詳細資訊。 它使用 Name 參數來指定程序,但省略了可選的參數名稱。 管線運算子(|)將 處理 物件傳送至 Format-List 指令碼,指令碼顯示所有可用的屬性()*及其值。
你也可以透過程序識別來識別這些程序。 例如 Get-Process -Id 664, 2060。
範例 3:取得所有工作集大小大於指定大小的程序
Get-Process | Where-Object { $_.WorkingSet -gt 20971520 }
Get-Process | Where-Object WorkingSet -GT 20MB
指令小程式會 Get-Process 回傳正在執行的程序。 輸出會被傳送到 Where-Object cmdlet,該 cmdlet 會選擇 WorkingSet 值大於 20,971,520 位元組的物件。
在第一個範例中,使用Where-Object腳本區塊來比較每個 Process 物件的 WorkingSet 屬性。 在第二個範例中, Where-Object cmdlet 使用簡化語法來比較 WorkingSet 屬性。 在此情況下,是 -GT 參數,而非比較算子。 第二個例子也使用 數值字面後綴 作為簡潔的替代 20971520。 在 PowerShell 中, 代表 MB 一個 mebibyte(MiB)乘數。
20MB 等於 20,971,520 位元組。
範例 4:根據優先順序分組顯示電腦上的程序
$processes = Get-Process
$processes | Sort-Object { $_.PriorityClass } | Format-Table -View Priority
這些指令會根據 優先順序類別,將程序分組顯示在電腦上。 第一個指令取得電腦上的所有程序並將它們儲存在變數中 $processes 。
第二個指令將儲存在變數中的 $processesProcess 物件傳送到 cmdlet,Sort-Object再傳到 Format-Table cmdlet,進而透過優先權視圖格式化程序。
範例 5:在預設的「Get-Process」輸出顯示中新增屬性
Get-Process -Name pwsh | Format-Table -Property @(
@{ Name = 'NPM(K)'; Expression = { [int] ($_.NPM / 1KB) } }
@{ Name = 'PM(M)'; Expression = { [int] ($_.PM / 1MB) } }
@{ Name = 'WS(M)'; Expression = { [int] ($_.WS / 1MB) } }
@{ Name = 'CPU(s)'; Expression = { if ($_.CPU) { $_.CPU.ToString('N') } } }
'Id'
@{ Name = 'SI'; Expression = 'SessionId' }
'ProcessName'
'StartTime'
) -AutoSize
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName StartTime
------ ----- ----- ------ -- -- ----------- ---------
84 46 79 18.297 3188 1 pwsh 4/14/2025 10:40:10 AM
66 30 90 4.328 4640 1 pwsh 4/13/2025 3:33:50 PM
66 30 90 4.516 9204 1 pwsh 4/14/2025 9:54:27 AM
此範例是從本地電腦檢索程序,並將每個 Process 物件管道傳送到 Format-Table cmdlet。
Format-Table以屬性名稱與計算出的屬性混合,重現 Process 物件的預設輸出顯示。 顯示包含一個預設顯示中沒有的額外 StartTime 屬性。
範例 6:取得某個流程的版本資訊
Get-Process -Name pwsh -FileVersionInfo
ProductVersion FileVersion FileName
-------------- ----------- --------
7.5.0 SHA: 99da… 7.5.0.500 C:\Program Files\PowerShell\7\pwsh.exe
此指令使用 FileVersionInfo 參數來取得程序主模組 pwsh 的檔案版本資訊。 主要模組是用來啟動程序的檔案,在此例中為 pwsh.exe。
若要在Windows Vista及後續版本的 Windows 中使用你不擁有的程序,必須以提升權限執行 PowerShell(以管理員身份執行)。
範例 7:讓模組載入指定的程序
Get-Process -Name SQL* -Module
此指令使用 Module 參數,讓所有名稱 SQL以 為 的程序載入模組。
若要在Windows Vista及後續版本的 Windows 中使用你不擁有的程序,必須以提升權限執行 PowerShell(以管理員身份執行)。
範例 8:尋找程序的擁有者
Get-Process -Name pwsh -IncludeUserName
WS(M) CPU(s) Id UserName ProcessName
----- ------ -- -------- -----------
46.53 21.70 3188 DOMAIN01\user01 pwsh
Get-CimInstance -ClassName Win32_Process -Filter "name='pwsh.exe'" |
Invoke-CimMethod -MethodName GetOwner
Domain ReturnValue User PSComputerName
------ ----------- ---- --------------
DOMAIN01 0 user01
第一個指令顯示如何取得程序的擁有者。 輸出顯示擁有者為 DOMAIN01\user01。
第二條管線展示了另一種方式,讓程序擁有者使用 Get-CimInstance 和 Invoke-CimMethod。 帶有過濾器的 Win32_Process 類別會pwsh檢索程序,而呼叫GetOwner()的方法則回傳程序的網域與使用者資訊。 此方法僅支援 Windows,且不需要提升使用者權限。
範例 9:使用自動變數來識別承載當前會話的程序
Get-Process -Name pwsh
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
83 96.21 105.95 4.33 1192 10 pwsh
79 83.81 117.61 2.16 10580 10 pwsh
Get-Process -Id $PID
NPM(K) PM(M) WS(M) CPU(s) Id SI ProcessName
------ ----- ----- ------ -- -- -----------
83 96.21 77.53 4.39 1192 10 pwsh
這些指令展示了如何利用 $PID 自動變數來識別目前 PowerShell 會話所承載的程序。 你可以用這種方法區分主機程序和其他 pwsh 你想控制的程序。
第一個指令會啟動所有 pwsh 程序。 第二個指令則是承 pwsh 載目前會話的程序。
範例 10:取得所有有主視窗標題的程序,並將它們顯示在表格中
Get-Process |
Where-Object -Property MainWindowTitle |
Format-Table -Property Id, Name, MainWindowTitle -AutoSize
此管線會取得所有有主視窗標題的程序,並以表格形式顯示,並附有程序 ID 和名稱。
MainWindowTitle 是 Diagnostics.Process 物件類型 Get-Process 中回傳的眾多有用屬性之一。 要查看所有物業,請使用 Get-Process | Get-Member。
參數
-FileVersionInfo
表示此 cmdlet 會取得該程序中執行的程式的檔案版本資訊。
在Windows Vista及以後版本的 Windows,您必須以提升權限(Run as administrator)來執行 PowerShell,才能在你不擁有的程序上使用此參數。
使用此參數等同於存取每個 Process 物件的 MainModule.FileVersionInfo 屬性。 當你使用這個參數時, Get-Process 會回傳一個 FileVersionInfo 物件,而不是 Process 物件。 你無法將使用此參數產生的輸出管道傳送到預期有 Process 物件的 cmdlet,例如 Stop-Process。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | FV, FVI |
參數集
Name
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
Id
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
InputObject
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Id
透過程序識別碼(PID)指定一個或多個程序。 你可以指定多個 ID,並用逗號分隔。 要取得程序的 PID,請使用 Get-Process。 要取得目前 PowerShell 會話的 PID,請使用 $PID.
參數屬性
| 類型: | Int32[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | PID |
參數集
Id
| Position: | Named |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
IdWithUserName
| Position: | Named |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-IncludeUserName
表示此指令會為每個回傳的 Process 物件新增 UserName 屬性。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
NameWithUserName
| Position: | Named |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
IdWithUserName
| Position: | Named |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
InputObjectWithUserName
| Position: | Named |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-InputObject
指定一個或多個 Process 物件。 使用包含物件的變數,或是取得物件的指令或表達式。
參數屬性
| 類型: | Process[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
InputObject
| Position: | Named |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
InputObjectWithUserName
| Position: | Named |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Module
表示此指令小子取得程序已載入的模組。
在Windows Vista及以後版本的 Windows,您必須以提升權限(Run as administrator)來執行 PowerShell,才能在你不擁有的程序上使用此參數。
使用此參數等同於存取每個 Process 物件的 Modules 屬性。
使用這個參數時,會 Get-Process 回傳一個 ProcessModule 物件,而不是 Process 物件。 你無法將使用此參數產生的輸出管道傳送到預期有 Process 物件的 cmdlet,例如 Stop-Process。
當你同時使用 Module 和 FileVersionInfo 參數時,這個 cmdlet 會回傳一個包含所有模組檔案版本資訊的 FileVersionInfo 物件。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
Name
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
Id
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
InputObject
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Name
以程序名稱指定一個或多個程序。 你可以指定多個程序名稱,並用逗號分隔,並使用通配字元。 使用該 -Name 參數是可選的。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
| 別名: | ProcessName |
參數集
Name
| Position: | 0 |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
NameWithUserName
| Position: | 0 |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
CommonParameters
此 cmdlet 支援常見參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
Process
你可以把 Process 物件的管道傳送到這個 cmdlet。
輸出
Process
預設情況下,此 cmdlet 會回傳 System.Diagnostics.Process 物件。
FileVersionInfo
如果你使用 FileVersionInfo 參數,這個 cmdlet 會回傳 一個 System.Diagnostics.FileVersionInfo 物件。
ProcessModule
如果你使用 Module 參數,但未使用 FileVersionInfo 參數,這個 cmdlet 會回傳 一個 System.Diagnostics.ProcessModule 物件。
備註
PowerShell 包含下列 Get-Process的別名:
- 所有平臺:
gps
- 窗戶:
ps
在運行 64 位元 Windows 的電腦上,64 位元版本的 PowerShell 會取得主模組和 64 位元的程序模組。 32 位元版本的 PowerShell 僅包含 32 位元的程序模組。
Warning
當你使用 Get-Process 32 位元版本的 PowerShell 取得 64 位元程序時,回傳的 Process 物件的屬性Path如 和 MainModule 為 $null。 你必須使用 PowerShell 的 64 位元版本或 Win32_Process 類別。
若要從遠端電腦取得流程資訊,請使用 Invoke-Command cmdlet。 如需詳細資訊,請參閱 Invoke-Command。
在 Windows 上,你可以使用 PowerShell 中的 Windows Management Instrumentation (WMI)
Process 物件的預設顯示為包含以下欄位的表格視圖。
- NPM(K):程序所使用的非分頁記憶體數量,以千位元組為單位。
- PM(M):程序所使用的可分頁記憶體量,單位為兆位元組。
- WS(M):程序工作集的大小,以兆位元組為單位。 工作集由程序最近參考的記憶體頁面組成。
- CPU(s):該程序在所有處理器上所使用的處理器時間,以秒為單位。
- ID:流程的 ID(PID)。
- SI:流程的會話編號。
- ProcessName:程序名稱。
你可以使用內建的程序物件替代視圖,例如啟動Format-Table時間(StartTime)和優先權(Priority)。 你也可以設計自己的視圖。
關於所有可用 Process 物件成員的描述,請參見 Process Properties 與 Process Methods。