Stop-Process
停止一個或多個正在執行的程序。
語法
Id (預設值)
Stop-Process
[-Id] <Int32[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Name
Stop-Process
-Name <String[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
InputObject
Stop-Process
[-InputObject] <Process[]>
[-PassThru]
[-Force]
[-WhatIf]
[-Confirm]
[<CommonParameters>]
Description
指令 Stop-Process 長會停止一個或多個正在執行的程序。 你可以透過程序名稱或程序 ID(PID)指定程序,或將程序物件傳給 Stop-Process。
Stop-Process 僅適用於本地電腦上運行的程序。
在 Windows Vista 及更新版本的 Windows 作業系統中,若要停止一個不屬於目前使用者的程序,必須透過以管理員身份執行選項啟動 PowerShell。 另外,除非你指定 確認 參數,否則不會被要求確認。
範例
範例 1:停止所有程序實例
Stop-Process -Name "notepad"
此指令會停止電腦上所有記事本程序的實例。 每個記事本實例都有自己的程序。 它使用 Name 參數來指定所有程序名稱相同。 如果你要用 Id 參數來停止相同的程序,你必須列出每個 Notepad 實例的程序 ID。
範例 2:停止某個程序的特定實例
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
此指令會停止記事本程序的特定實例。 它使用程序 ID 3952 來識別程序。
Confirm 參數指示 PowerShell 在停止程序前先提示你。 由於提示詞除了 ID 外還包含程序名稱,這是最佳實務。
PassThru 參數會將程序物件傳給格式化器以進行顯示。 若沒有這個參數,指令下達 Stop-Process 後就不會顯示畫面。
範例 3:停止一個程序並偵測它已停止
calc
$p = Get-Process -Name "calc"
Stop-Process -InputObject $p
Get-Process | Where-Object {$_.HasExited}
這一系列指令會啟動和停止程序, Calc 然後偵測已停止的程序。
第一個指令啟動計算機實例。
第二個指令會 Get-Process 取得一個代表程序的 Calc 物件,然後將其儲存在變數中 $p 。
第三個指令會停止這個 Calc 過程。 它使用 InputObject 參數將物件傳遞給 Stop-Process。
最後一個指令會取得電腦上所有正在執行但現在已停止的程序。 它用 Get-Process 來取得電腦上的所有程序。 管線運算子(|)將結果傳給 Where-Object cmdlet,指令本選擇 HasExited 屬性值為 $true的結果。
HasExited 只是程序物件的一個屬性。 要找到所有屬性,請輸入 Get-Process | Get-Member。
範例 4:停止一個不屬於現有使用者的程序
PS> Get-Process -Name "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 -Name "lsass" | Stop-Process <<<<
[ADMIN]: PS> Get-Process -Name "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]: PS> Get-Process -Name "lsass" | Stop-Process -Force
這些指令展示了使用 原力 停止非使用者擁有的程序的效果。
第一個指令用 Get-Process 來取得 Lsass 程序。 管線操作員會將程序傳送到 Stop-Process 以停止它。 如範例輸出所示,第一個指令會失敗並出現存取被拒絕訊息,因為此過程只能由電腦管理員群組的成員停止。
當使用 Run as administrator 選項開啟 PowerShell,且重複執行該指令時,PowerShell 會提示你確認。
第二個指令指定 用力 抑制提示。 結果,該程序在未獲確認的情況下被終止。
參數
-Confirm
在執行 Cmdlet 之前,提示您進行確認。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 參見 |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Force
在不要求確認的情況下停止指定的程序。 預設情況下, Stop-Process 會在停止任何非目前使用者擁有的程序前進行確認。
要找到程序的擁有者,請使用 Get-CimInstance cmdlet 取得代表該程序的 Win32_Process 物件,然後使用 GetOwner 方法。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Id
指定要停止的程序 ID。 要指定多個 ID,請用逗號分隔這些 ID。 要找到程序的 PID,請輸入 Get-Process。
參數屬性
| 類型: | Int32[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
Id
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-InputObject
指定要停止的程序物件。 輸入包含 物件的變數,或輸入取得物件的命令或表達式。
參數屬性
| 類型: | Process[] |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
InputObject
| Position: | 0 |
| 必要: | True |
| 來自管線的值: | True |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-Name
指定要停止的程序名稱。 你可以輸入多個程序名稱,並以逗號分隔,或使用萬用字元。
參數屬性
| 類型: | String[] |
| 預設值: | None |
| 支援萬用字元: | True |
| 不要顯示: | False |
| 別名: | ProcessName |
參數集
Name
| Position: | Named |
| 必要: | True |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | True |
| 來自剩餘引數的值: | False |
-PassThru
回傳一個代表該程序的物件。 根據預設,此 Cmdlet 不會產生任何輸出。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | None |
| 支援萬用字元: | False |
| 不要顯示: | False |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
-WhatIf
顯示 Cmdlet 執行時會發生什麼事。 指令未執行。
參數屬性
| 類型: | SwitchParameter |
| 預設值: | False |
| 支援萬用字元: | False |
| 不要顯示: | False |
| 別名: | 威斯康辛 |
參數集
(All)
| Position: | Named |
| 必要: | False |
| 來自管線的值: | False |
| 來自管線按屬性名稱的值: | False |
| 來自剩餘引數的值: | False |
CommonParameters
此 cmdlet 支援常見參數:-Debug、-ErrorAction、-ErrorVariable、-InformationAction、-InformationVariable、-OutBuffer、-OutVariable、-PipelineVariable、-ProgressAction、-Verbose、-WarningAction 和 -WarningVariable。 如需詳細資訊,請參閱 about_CommonParameters。
輸入
Process
你可以把一個程序物件輸入這個 cmdlet。
輸出
None
根據預設,此 Cmdlet 不會傳回任何輸出。
Process
當你使用 PassThru 參數時,這個 cmdlet 會回傳一個代表停止程序的 Process 物件。
備註
PowerShell 包含下列 Stop-Process的別名:
- 所有平臺:
spps
- 窗戶:
kill
Stop-Process指令小程式執行非同步。 呼叫 Stop-Process cmdlet 後,你可以呼叫 Wait-Process cmdlet 等待程序退出,或檢查 Process 物件的 HasExited 屬性(如果使用 cmdlet 的 PassThru 參數Stop-Process,則可作為輸入或輸出),以判斷程序是否已退出。
你也可以在 PowerShell 中使用 Windows 管理儀器(WMI)Get-CimInstance WMI SDK。
停止程序時,要知道停止程序可能會停止依賴該程序的程序和服務。 在極端情況下,停止一個程序可能會讓 Windows 停止運作。
此 cmdlet 是透過 System.Diagnostics.Process 類別的 Kill 方法實作的。 欲了解更多此方法資訊,請參閱 Process.Kill Method。