停止一或多個正在執行的處理序。
語法
Stop-Process [-Id] <Int32[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>] Stop-Process -InputObject <Process[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>] Stop-Process -Name <string[]> [-Force] [-PassThru] [-Confirm] [-WhatIf] [<CommonParameters>]
描述
Stop-Process Cmdlet 會停止一個或多個正在執行的處理序。您可以依處理序名稱或是處理序識別碼 (PID) 指定處理序,或是將處理序物件傳遞給 Stop-Process。Stop-Process 只適用於本機電腦上執行的處理序。
在 Windows Vista 與較新版本的 Windows 上,若要停止不屬於目前使用者的處理序,必須利用 [以系統管理員身分執行] 選項啟動 Windows PowerShell。此外,除非使用 Force 參數,否則系統會提示您先進行確認。
參數
-Force
會在不提示要求確認的情況下停止指定的處理序。根據預設,Stop-Process 會先提示要求確認,然後才會停止不屬於目前使用的任一處理序。
若要尋找處理序的擁有者,請使用 Get-WmiMethod Cmdlet 取得代表處理序的 Win32_Process 物件,然後使用物件的 GetOwner 方法。
必要? |
false |
位置? |
named |
預設值 |
False |
接受管線輸入? |
false |
接受萬用字元? |
false |
-Id <Int32[]>
指定要停止之處理序的處理序識別碼。若要指定多個識別碼,請使用逗號來分隔識別碼。若要尋找處理序的 PID,請輸入 "Get-Process"。參數名稱 ("Id") 為選擇項。
必要? |
true |
位置? |
1 |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-InputObject <Process[]>
停止由指定的處理序物件所代表的處理序。請輸入包含物件的變數,或輸入可取得物件的命令或運算式。
必要? |
true |
位置? |
named |
預設值 |
|
接受管線輸入? |
true (ByValue) |
接受萬用字元? |
false |
-Name <string[]>
指定要停止之處理序的處理序名稱。可輸入多個處理序名稱 (以逗號分隔) 或使用萬用字元。
必要? |
true |
位置? |
named |
預設值 |
|
接受管線輸入? |
true (ByPropertyName) |
接受萬用字元? |
false |
-PassThru
傳回代表處理序的物件。根據預設,此 Cmdlet 不會產生任何輸出。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-Confirm
在執行命令前先提示確認。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
-WhatIf
說明執行命令時將會發生何種情況,但不會實際執行命令。
必要? |
false |
位置? |
named |
預設值 |
|
接受管線輸入? |
false |
接受萬用字元? |
false |
<CommonParameters>
這個 Cmdlet 支援一般參數:-Verbose、-Debug、-ErrorAction、-ErrorVariable、-OutBuffer 和 -OutVariable。如需詳細資訊,請參閱 about_Commonparameters.
輸入和輸出
輸入型別是可經由管道輸出至 Cmdlet 的物件型別。傳回型別則是 Cmdlet 所傳回的物件型別。
輸入 |
System.Diagnostics.Process 您可以經由管道將處理序物件輸出至 Stop-Process。 |
輸出 |
None 或 System.Diagnostics.Process 使用 PassThru 參數時,Stop-Process 會傳回代表已停止之處理序的 System.Diagnostics.Process 物件。否則,這個 Cmdlet 不會產生任何輸出。 |
附註
您也可以利用 Stop-Process 的內建別名 ("kill" 和 "spps") 對其進行參照。如需詳細資訊,請參閱 about_Aliases。
在 Windows PowerShell 中亦可使用 Windows Management Instrumentation (WMI) Win32_Process 物件的屬性和方法。如需詳細資訊,請參閱 Get-WmiObject 和 WMI SDK。
停止處理序時,請注意停止處理序的作業會停止處理序以及相依於該處理序的服務。在極端狀況下,停止處理序可能會造成 Windows 停止。
範例 1
C:\PS>stop-process -name notepad 描述 ----------- 這個命令會停止電腦上所有「記事本」處理序的執行個體 (記事本的每個執行個體都是在其個別處理序中執行)。它會使用 Name 參數指定這些處理序,其中每個處理序都具有相同名稱。如果是使用 ID 參數來停止相同的處理序,就必須列出每個記事本執行個體的處理序識別碼。
範例 2
C:\PS>stop-process -id 3952 -confirm -passthru Confirm Are you sure you want to perform this action? Performing operation "Stop-Process" on Target "notepad (3952)". [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"):y Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id ProcessName ------- ------ ----- ----- ----- ------ -- ----------- 41 2 996 3212 31 3952 notepad 描述 ----------- 這個命令會停止特定的「記事本」處理序執行個體。它會使用處理序識別碼 (3952) 識別此處理序。Confirm 參數會將 Windows PowerShell 設定成先提示使用者,再停止該處理序。由於這項提示包括了處理序名稱及其識別碼,因此是最佳的處理方式。PassThru 參數會將處理序物件傳遞到格式器以供顯示。如果沒有這個參數,Stop-Process 命令執行之後就不會產生任何顯示。
範例 3
C:\PS>calc c:\PS>$p = get-process calc c:\PS>stop-process -inputobject $p c:\PS>get-process | where-object {$_.HasExited} 描述 ----------- 這一系列的命令會啟動和停止「小算盤」處理序,然後偵測已經停止的處理序。 第一個命令 ("calc") 會啟動小算盤的執行個體。第二個命令 ("$p = get-process calc") 會使用 Get-Process Cmdlet 取得代表 Calc 處理序的物件,並將它儲存到 $p 變數中。第三個命令 ("stop-process -inputobject $p") 會使用 Stop-Process Cmdlet 停止 Calc 處理序。它會使用 InputObject 參數將此物件傳遞給 Stop-Process。 最後一個命令會取得電腦上原本在執行中但是現在已停止的所有處理序。它會使用 Get-Process Cmdlet 取得電腦上的所有處理序。管線運算子 (|) 會將結果傳遞給 Where-Object Cmdlet,並由此 Cmdlet 選取 HasExited 屬性的值為 TRUE 的處理序。HasExited 只是其中一種處理序物件屬性。若要尋找所有屬性,請輸入 "get-process | get-member"。
範例 4
C:\PS>get-process lsass | stop-process Stop-Process : Cannot stop process 'lsass (596)' because of the following error: Access is denied At line:1 char:34 + get-process lsass | stop-process <<<< [ADMIN]: C:\PS> get-process lsass | stop-process Warning! Are you sure you want to perform this action? Performing operation 'Stop-Process' on Target 'lsass(596)' [Y] Yes [A] Yes to All [N] No [L] No to All [S] Suspend [?] Help (default is "Y"): [ADMIN]: C:\PS> get-process lsass | stop-process -force [ADMIN]: C:\PS> 描述 ----------- 這些命令示範使用 Force 參數停止不屬於使用者之處理序的作用。 第一個命令會使用 Get-Process Cmdlet 取得 Lsass 處理序。管線運算子會將處理序傳送給 Stop-Process Cmdlet 以停止處理序。如範例輸出的結果,因為這個處理序只能夠由電腦上 Administrators 群組成員停止,所以第一個命令失敗,顯示訊息「拒絕存取」。 以 [以系統管理員身分執行] 選項開啟 Windows PowerShell 時,會重複該命令,且 Windows PowerShell 提示您進行確認。 第二個命令會使用 Force 參數抑制系統提示。因此,會在不提示要求確認的情況下停止處理序。
請參閱