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 Cmdlet 會取得本機電腦上的進程。
如果沒有參數,此 Cmdlet 會取得本機電腦上的所有進程。 您也可以透過行程名稱或進程標識碼 (PID), 或將 System.Diagnostics.Process 物件管線至此 Cmdlet 來指定特定進程。
根據預設,此 Cmdlet 會傳回 Process 物件,其中包含進程的詳細資訊,並支援可讓您控制它的方法。 透過參數,您可以變更此 Cmdlet 所傳回的信息類型。
- 模組:擷取載入進程之每個模組的資訊。
- FileVersionInfo:擷取進程主要模組的檔案版本資訊。
備註
模組是載入至進程的可執行檔或動態連結庫 (DLL)。 進程有一或多個模組。 主要模組是用來一開始啟動程式的模組。 如需詳細資訊,請參閱 ProcessModule 類別。
範例
範例 1:取得本機計算機上所有執行中進程的清單
Get-Process
此命令會取得本機電腦上所有執行中進程的清單。 如需每個顯示數據行的定義,請參閱 NOTES 一節。
若要檢視 Process 物件的所有屬性,請使用 Get-Process | Get-Member。 根據預設,PowerShell 會使用 KB (K) 和 MB (M) 等單位來顯示特定屬性值。 使用成員存取運算子 (.) 存取時的實際值以位元組為單位。
範例 2:顯示一或多個進程的詳細資訊
Get-Process winword, explorer | Format-List *
此管線會顯示計算機上和 explorer 進程的詳細資訊winword。 它會使用 Name 參數來指定進程,但省略選擇性參數名稱。 管線運算子 (|) 管線會將 Process 物件傳送至 Format-List Cmdlet,此 Cmdlet 會顯示所有可用的屬性 (*) 及其每個物件的值。
您也可以依其進程識別碼來識別進程。 例如,Get-Process -Id 664, 2060。
範例 3:取得工作集大於指定大小的所有進程
Get-Process | Where-Object { $_.WorkingSet -gt 20971520 }
Get-Process | Where-Object WorkingSet -GT 20MB
Cmdlet 會 Get-Process 傳回執行中的進程。 輸出會管線傳送至 Where-Object Cmdlet,以選取 WorkingSet 值大於 20,971,520 個字節的物件。
在第一個範例中,Where-Object使用 scriptblock 比較每個 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 物件傳送至 Sort-Object Cmdlet,然後傳送至 Format-Table Cmdlet,以使用 Priority 檢視來格式化進程。
範例 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。
第二個管線顯示使用 和Invoke-CimMethod取得進程Get-CimInstance擁有者的不同方式。
具有篩選條件的 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
此管線會取得具有主視窗標題的所有進程,並在具有進程標識碼和名稱的數據表中顯示它們。
MainWindowTitle 是 傳回之 Diagnostics.Process 物件類型 Get-Process 的許多實用屬性之一。 若要檢視所有屬性,請使用 Get-Process | Get-Member。
參數
-FileVersionInfo
指出這個 Cmdlet 會取得程式中執行之程式的檔案版本資訊。
在 Windows Vista 和更新版本的 Windows 上,您必須以更高的使用者權力執行 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)。 您可以指定以逗號分隔的多個識別碼。 若要取得行程的 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
表示此命令會將 UserName 屬性新增至每個傳回 的 Process 物件。
參數屬性
| 類型: | 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
指出此 Cmdlet 會取得進程已載入的模組。
在 Windows Vista 和更新版本的 Windows 上,您必須以更高的使用者權力執行 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 位進程模組。 PowerShell 的 32 位版本只會取得 32 位進程模組。
警告
當您使用 Get-Process 在 32 位版本的 PowerShell 中取得 64 位進程時,傳回的 Process 物件等PathMainModule屬性為 $null。 您必須使用 64 位版本的 PowerShell 或 Win32_Process 類別。
若要從遠端電腦取得進程資訊,請使用 Invoke-Command Cmdlet。 如需詳細資訊,請參閱 Invoke-Command。
在 Windows 上,您可以使用 PowerShell 中的 Windows Management Instrumentation (WMI) Win32_Process 類別作為 的替代方案 Get-Process。 如需詳細資訊,請參閱:
Process 物件的預設顯示是包含下列數據行的數據表檢視。
- NPM(K):進程所使用的非分頁記憶體數量,以 KB 為單位。
- PM(M):行程使用的可分頁記憶體數量,以 MB 為單位。
- WS(M):進程工作集的大小,以 MB 為單位。 工作集是由進程最近參考的記憶體分頁所組成。
- CPU(s):進程在所有處理器上使用的處理器時間,以秒為單位。
- 識別碼:進程的進程標識碼(PID)。
- SI:進程的會話標識碼。
- ProcessName:進程的名稱。
您可以使用內建的替代檢視來取得與 Format-Table搭配 使用的 Process 物件,例如 StartTime 和 Priority。 您也可以設計自己的檢視。
如需所有可用 Process 對象成員的描述,請參閱 Process Properties 和 Process Methods。