共用方式為


Get-Process

取得在本機計算機上執行的進程。

Syntax

Get-Process
   [[-Name] <String[]>]
   [-Module]
   [-FileVersionInfo]
   [<CommonParameters>]
Get-Process
   [[-Name] <String[]>]
   -IncludeUserName
   [<CommonParameters>]
Get-Process
   -Id <Int32[]>
   [-Module]
   [-FileVersionInfo]
   [<CommonParameters>]
Get-Process
   -Id <Int32[]>
   -IncludeUserName
   [<CommonParameters>]
Get-Process
   -InputObject <Process[]>
   [-Module]
   [-FileVersionInfo]
   [<CommonParameters>]
Get-Process
   -InputObject <Process[]>
   -IncludeUserName
   [<CommonParameters>]

Description

Cmdlet Get-Process 會取得本機計算機上的進程。

如果沒有參數,此 Cmdlet 會取得本機電腦上的所有進程。 您也可以依行程名稱或進程標識符來指定特定進程, (PID) ,或透過管線將進程對象傳遞至此 Cmdlet。

根據預設,此 Cmdlet 會傳回進程物件,其中包含進程的詳細資訊,並支援可讓您啟動和停止進程的方法。 您也可以使用 Cmdlet 的參數 Get-Process ,取得進程中執行之程式的檔案版本資訊,以及取得載入進程的模組。

範例

範例 1:取得本機計算機上所有作用中進程的清單

Get-Process

此命令會取得本機計算機上執行的所有使用中進程清單。 如需每個數據行的定義,請參閱 附註 一節。

範例 2:取得一或多個進程的所有可用數據

Get-Process winword, explorer | Format-List *

此命令取得電腦上 Winword 和 Explorer 處理程序的所有可用相關資料。 它會使用 Name 參數來指定進程,但省略選擇性參數名稱。 管線運算子 (|) 將數據傳遞至 Format-List Cmdlet,其中會顯示 Winword 和 Explorer 進程物件 (*) 的所有可用屬性。

您也可以依處理程序識別碼來識別處理程序。 例如 Get-Process -Id 664, 2060

範例 3:取得工作集大於指定大小的所有進程

Get-Process | Where-Object {$_.WorkingSet -gt 20000000}

此命令取得工作集大於 20 MB 的所有處理程序。 它會使用 Get-Process Cmdlet 來取得所有執行中的進程。 管線運算符 (|) 會將進程對象傳遞至 Where-Object Cmdlet,而此 Cmdlet 只會選取值大於 20,000,000 個位元組的物件。

WorkingSet 是進程對象的許多屬性之一。 若要檢視所有屬性,請輸入 Get-Process | Get-Member。 根據預設,所有數量屬性都是以位元組為單位,即使預設顯示是以 KB 和 MB 來列示它們。

範例 4:根據優先順序列出群組中計算機上的進程

$A = Get-Process
$A | Get-Process | Format-Table -View priority

這些命令會根據其優先順序類別,列出計算機上群組中的進程。 第一個命令會取得計算機上的所有進程,然後將它們儲存在變數中 $A

第二個命令會使用管線將儲存在 變數中的 $AProcess 物件傳送至 Get-Process Cmdlet,然後傳送至 Format-Table Cmdlet,以使用 Priority 檢視格式化進程。

優先順序檢視和其他檢視會以 PowerShell 主目錄中的 PS1XML 格式檔案定義 ($pshome) 。

範例 5:將屬性新增至標準 Get-Process 輸出顯示

Get-Process pwsh | Format-Table `
    @{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) {$_.CPU.ToString("N")}}},
    Id, ProcessName, StartTime -AutoSize

NPM(K)  PM(K)  WS(K)   VM(M) CPU(s)    Id ProcessName StartTime
------  -----  -----   ----- ------    -- ----------- ---------
   143 239540 259384 2366162 22.73  12720 pwsh        12/5/2022 3:21:51 PM
   114  61776 104588 2366127 11.45  18336 pwsh        12/5/2022 7:30:53 AM
   156  77924  82060 2366185 10.47  18812 pwsh        12/5/2022 7:30:52 AM
    85  48216 115192 2366074 1.14   24428 pwsh        12/8/2022 9:14:15 AM

此範例會從本機計算機擷取進程。 擷取的進程會透過管線傳送至 Format-Table 命令,以將 StartTime 屬性新增至標準 Get-Process 輸出顯示。

範例 6:取得進程的版本資訊

Get-Process pwsh -FileVersionInfo

ProductVersion   FileVersion      FileName
--------------   -----------      --------
6.1.2            6.1.2            C:\Program Files\PowerShell\6\pwsh.exe

此命令會使用 FileVersionInfo 參數來取得 PowerShell 進程之主要模組的檔案版本資訊 pwsh.exe

若要使用您不是在 Windows Vista 和更新版本的 Windows 上擁有的進程執行此命令,您必須使用 [ 以系統管理員身分執行 ] 選項開啟 PowerShell。

範例 7:取得以指定進程載入的模組

Get-Process SQL* -Module

此命令會使用 Module 參數來取得進程已載入的模組。 此命令會取得名稱開頭 SQL為 之進程的模組。

若要在 Windows Vista 和更新版本的 Windows 上執行此命令,其中包含您不擁有的進程,您必須使用 [ 以系統管理員身分執行 ] 選項啟動 PowerShell。

範例 8:尋找進程的擁有者

Get-Process pwsh -IncludeUserName

Handles      WS(K)   CPU(s)     Id UserName            ProcessName
-------      -----   ------     -- --------            -----------
    782     132080     2.08   2188 DOMAIN01\user01     pwsh

此命令示範如何尋找處理程序的擁有者。 在 Windows 上, IncludeUserName 參數需要提高的用戶權力, (以系統管理員 身分執行) 。 輸出會顯示擁有者為 Domain01\user01

範例 9:使用自動變數來識別裝載目前會話的進程

Get-Process 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 工作階段的進程。 您可以使用這個方法,將主機進程與您可能想要停止或關閉的其他 PowerShell 進程區隔開來。

第一個命令會取得目前會話中的所有 PowerShell 進程。

第二個命令會取得裝載目前會話的PowerShell進程。

範例 10:取得具有主視窗標題的所有進程,並將其顯示在數據表中

Get-Process | Where-Object {$_.mainWindowTitle} | Format-Table Id, Name, mainWindowtitle -AutoSize

此命令取得具有主視窗標題的所有處理程序,並將它們顯示在含有處理程序識別碼和處理程序名稱的表格中。

mainWindowTitle 屬性只是 Process 物件Get-Process傳回的許多實用屬性之一。 若要檢視所有屬性,請使用管線將命令的結果 Get-Process 傳送至 Get-Member Cmdlet Get-Process | Get-Member

參數

-FileVersionInfo

指出這個 Cmdlet 會取得進程中執行之程式的檔案版本資訊。

在 Windows Vista 和更新版本的 Windows 上,您必須使用 [以 系統管理員身分執行 ] 選項開啟 PowerShell,才能在未擁有的進程上使用此參數。

使用此參數相當於取得每個進程物件的 MainModule.FileVersionInfo 屬性。 當您使用此參數時, Get-Process 會傳回 FileVersionInfo 物件 System.Diagnostics.FileVersionInfo,而不是進程物件。 因此,您無法使用管線將命令的輸出傳送至預期進程物件的 Cmdlet,例如 Stop-Process

Type:SwitchParameter
Aliases:FV, FVI
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Id

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

Type:Int32[]
Aliases:PID
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-IncludeUserName

表示會傳回 Process 物件的 UserName 值與命令的結果。

Type:SwitchParameter
Position:Named
Default value:None
Required:True
Accept pipeline input:False
Accept wildcard characters:False

-InputObject

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

Type:Process[]
Position:Named
Default value:None
Required:True
Accept pipeline input:True
Accept wildcard characters:False

-Module

指出此 Cmdlet 會取得進程已載入的模組。

在 Windows Vista 和更新版本的 Windows 上,您必須使用 [以 系統管理員身分執行 ] 選項開啟 PowerShell,才能在未擁有的進程上使用此參數。

此參數相當於取得每個進程物件的 Modules 屬性。 當您使用此參數時,這個 Cmdlet 會傳回 ProcessModule 物件 System.Diagnostics.ProcessModule,而不是進程物件。 因此,您無法使用管線將命令的輸出傳送至預期進程物件的 Cmdlet,例如 Stop-Process

當您在同一個命令中同時使用 ModuleFileVersionInfo 參數時,此 Cmdlet 會傳回 FileVersionInfo 物件,其中包含所有模組檔案版本的相關信息。

Type:SwitchParameter
Position:Named
Default value:False
Required:False
Accept pipeline input:False
Accept wildcard characters:False

-Name

依處理程序名稱指定一個或多個處理程序。 您可以輸入多個處理程序名稱 (以逗號分隔) 及使用萬用字元。 參數名稱 (Name) 是選擇性的。

Type:String[]
Aliases:ProcessName
Position:0
Default value:None
Required:False
Accept pipeline input:True
Accept wildcard characters:True

輸入

Process

您可以使用管線將處理程序物件傳送至此 Cmdlet。

輸出

Process

根據預設,此 Cmdlet 會傳回 System.Diagnostics.Process 物件。

FileVersionInfo

如果您使用 FileVersionInfo 參數,此 Cmdlet 會傳回 FileVersionInfo 物件。

ProcessModule

如果您使用 Module 參數,但不含 FileVersionInfo 參數,此 Cmdlet 會傳回 ProcessModule 物件。

備註

PowerShell 包含的下列別名 Get-Process

  • 所有平台:
    • gps
  • Windows:
    • ps

在執行 64 位版本的 Windows 的電腦上,64 位版本的 PowerShell 只會取得 64 位進程模組,而 32 位版本的 PowerShell 只會取得 32 位進程模組。

若要從遠端電腦取得進程資訊,請使用 Invoke-Command Cmdlet。 如需詳細資訊,請參閱 Invoke-Command

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

處理程序的預設顯示是一個包含下列欄位的表格。 如需進程物件所有屬性的描述,請參閱 處理屬性

  • 句柄:進程已開啟的句柄數目。
  • NPM (K) :進程所使用的非分頁記憶體數量,以 KB 為單位。
  • PM (K) :行程所使用的可分頁記憶體數量,以 KB 為單位。
  • WS (K) :進程的工作集大小,以 KB 為單位。 工作集是由處理程序最近參照的記憶體分頁組成。
  • VM (M) :行程所使用的虛擬記憶體數量,以 MB 為單位。 虛擬記憶體包括磁碟上分頁檔案中的儲存體。
  • CPU (s) :進程在所有處理器上使用的處理器時間,以秒為單位。
  • 標識碼:進程標識碼 (PID) 進程。
  • ProcessName:進程的名稱。 如需處理程序相關概念的說明,請參閱 [說明及支援中心] 中的 [詞彙] 和 [工作管理員] 的 [說明]。

您也可以使用隨附 Format-Table之進程的內建替代檢視,例如 StartTimePriority,而且您可以設計自己的檢視。