Stop-Job

它會停止一個 PowerShell 背景工作。

語法

SessionIdParameterSet (預設值)

Stop-Job
    [-Id] <Int32[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

JobParameterSet

Stop-Job
    [-Job] <Job[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

NameParameterSet

Stop-Job
    [-Name] <String[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

InstanceIdParameterSet

Stop-Job
    [-InstanceId] <Guid[]>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

StateParameterSet

Stop-Job
    [-State] <JobState>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

FilterParameterSet

Stop-Job
    [-Filter] <Hashtable>
    [-PassThru]
    [-WhatIf]
    [-Confirm]
    [<CommonParameters>]

Description

這個 Stop-Job cmdlet 會停止正在進行中的 PowerShell 背景工作。 你可以用這個 cmdlet 停止所有工作,或根據名稱、ID、實例 ID 或狀態停止選取的作業,或是將工作物件傳給 Stop-Job。

你可以用來 Stop-Job 停止背景工作,例如使用 Start-Job 任何 cmdlet 或 AsJob 參數啟動的作業。 當你停止背景工作時,PowerShell 會完成該工作佇列中所有待處理的任務,然後結束該工作。 此指令提交後,隊列中不會新增任務。

這個指令檔不會刪除背景工作。 若要刪除作業,請使用 Remove-Job Cmdlet。

從 PowerShell 3.0 Windows 開始,Stop-Job 也會停止自訂工作類型,例如 WorkflowJobs 以及 ScheduledJobs 的實例。 要啟用 Stop-Job 使用自訂工作類型的工作,請在執行 Stop-Job 指令前,將支援該自訂工作類型的模組匯入會話,可以是使用 Import-Module cmdlet 或在模組中取得或取得 cmdlet。 關於特定自訂工作類型的資訊,請參閱該自訂工作類型功能的說明文件。

範例

範例一:在遠端電腦上停止工作,Invoke-Command

$s = New-PSSession -ComputerName Server01 -Credential Domain01\Admin02
$j = Invoke-Command -Session $s -ScriptBlock {Start-Job -ScriptBlock {Get-EventLog -LogName System}}
Invoke-Command -Session $s -ScriptBlock { Stop-Job -Job $Using:j }

這個範例展示了如何利用 Stop-Job cmdlet 停止遠端電腦上執行的工作。

由於工作是以遠端執行Start-Job指令的指令碼(cmdlet)啟動Invoke-Command,工作物件會儲存在遠端電腦上。 你必須使用另一個 Invoke-Command 指令才能遠端執行 Stop-Job 指令。 欲了解更多遠端背景工作資訊,請參見about_Remote_Jobs。

第一個指令會在 Server01 電腦上建立一個 PowerShell 會話(PSSession),然後將會話物件儲存在變數中 $s 。 此指令使用網域管理員的憑證。

第二個指令使用 Invoke-Command cmdlet 在會話中執行指令 Start-Job 。 工作中的指令會取得系統事件日誌中的所有事件。 產生的工作物件會儲存在變數中 $j 。

第三個指令停止了工作。 它使用 Invoke-Command cmdlet 在 Server01 的 PSSession 中執行Stop-Job指令。 由於工作物件儲存在 $j,是本地電腦上的變數,指令會使用 Using: 作用域修飾符來識別 $j 為本地變數。 如需有關範圍修飾詞的詳細資訊Using:,請參閱about_Remote_Variables。

指令結束後,工作會停止, PSSession$s in 即可使用。

範例二:停止一個背景工作

Stop-Job -Name "Job1"

此指令會停止背景工作。Job1

範例三:停止多個背景工作

Stop-Job -Id 1, 3, 4

此指令可停止三個任務。 它透過 身份證來識別他們。

範例四:停止所有背景工作

Get-Job | Stop-Job

此指令會停止目前會話中所有背景工作。

範例 5:停止所有被封鎖的背景工作

Stop-Job -State Blocked

此指令會停止所有被阻擋的工作。

範例 6:透過實例 ID 停止工作

Get-Job | Format-Table ID, Name, Command, @{Label="State";Expression={$_.JobStateInfo.State}},
InstanceId -Auto
Id Name Command                 State  InstanceId
-- ---- -------                 -----  ----------
1 Job1 Start-Service schedule Running 05abb67a-2932-4bd5-b331-c0254b8d9146
3 Job3 Start-Service schedule Running c03cbd45-19f3-4558-ba94-ebe41b68ad03
5 Job5 Get-Service s*         Blocked e3bbfed1-9c53-401a-a2c3-a8db34336adf
Stop-Job -InstanceId e3bbfed1-9c53-401a-a2c3-a8db34336adf

這些指令顯示如何根據 InstanceID 停止工作。

第一個指令使用 Get-Job cmdlet 取得目前會話中的作業。 該指令使用管線運算子(|)將工作傳送到 Format-Table 一個命令,該命令會顯示每個工作指定屬性的表格。 表格包含每個工作的 InstanceId 。 它使用計算出的屬性來顯示工作狀態。

第二個指令使用 Stop-Job 帶有 InstanceId 參數的指令來停止所選工作。

範例 7:在遠端電腦上停止工作

$j = Invoke-Command -ComputerName Server01 -ScriptBlock {Get-EventLog -LogName System} -AsJob
$j | Stop-Job -PassThru
Id    Name    State      HasMoreData     Location         Command
--    ----    ----       -----------     --------         -------
5     Job5    Stopped    True            user01-tablet    Get-EventLog -LogName Sy...

這個範例展示了如何利用 Stop-Job cmdlet 停止遠端電腦上執行的工作。

由於工作是以 cmdlet 的 Invoke-CommandAsJob 參數啟動,工作物件位於本地電腦上,儘管工作在遠端電腦上執行。 因此,你可以用本地 Stop-Job 指令停止工作。

第一個指令使用 Invoke-Command cmdlet 在 Server01 電腦上啟動背景工作。 指令使用 AsJob 參數來執行遠端指令作為背景工作。

此指令回傳一個工作物件,該物件與 cmdlet 回傳的工作物件 Start-Job 相同。 指令會將工作物件儲存在變數中 $j 。

第二個指令使用管線運算子將變數中的 $j 作業傳送到 Stop-Job。 指令使用 PassThru 參數來指示 Stop-Job 返回工作物件。 工作物件顯示確認工作狀態為停止。

如需遠端背景工作的詳細資訊,請參閱 about_Remote_Jobs。

參數

-Confirm

在執行 Cmdlet 之前,提示您進行確認。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False
別名:參見

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-Filter

指定條件雜湊表。 這個指令長會停止滿足所有條件的工作。 輸入一個雜湊表,鍵為工作屬性,值為工作屬性值。

此參數僅適用於自訂工作類型,如 WorkflowJobs 與 ScheduledJobs。 它無法用於標準的背景工作,例如使用 Start-Job 指令長所建立的。 關於此參數的支援資訊,請參閱工作類型的說明主題。

此參數是在 Windows PowerShell 3.0 中引進的。

參數屬性

類型:Hashtable
預設值:None
支援萬用字元:False
不要顯示:False

參數集

FilterParameterSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Id

指定此指令子所停止的工作 ID。 預設是目前會話中的所有工作。

ID 是一個整數,唯一識別當前工作階段的工作。 它比實例 ID 更容易記憶和輸入,但它只在當前會話中唯一。 你可以輸入一個或多個ID,並以逗號分隔。 要找到職缺的 ID,請輸入 Get-Job。

參數屬性

類型:

Int32[]

預設值:All jobs
支援萬用字元:False
不要顯示:False

參數集

SessionIdParameterSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-InstanceId

指定此指令子停止的作業實例 ID。 預設是全部工作。

實例 ID 是一個 GUID,唯一識別電腦上的工作。 要找到作業的實例 ID,請使用 Get-Job。

參數屬性

類型:

Guid[]

預設值:All jobs
支援萬用字元:False
不要顯示:False

參數集

InstanceIdParameterSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Job

指定此指令本會停止的工作。 輸入包含工作項目的變數或取得工作指令。 你也可以用管線操作員把工作提交到 Stop-Job cmdlet。 預設情況下,會 Stop-Job 刪除目前工作階段中所有已啟動的工作。

參數屬性

類型:

Job[]

預設值:All jobs
支援萬用字元:False
不要顯示:False

參數集

JobParameterSet
Position:0
必要:True
來自管線的值:True
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-Name

指定這個指令子會停止的工作名稱。 請以逗號分隔的清單輸入職務名稱,或使用萬用字元(*)來輸入職務名稱模式。 預設情況下, Stop-Job 會停止目前會階段中所有產生的工作。

由於友善名稱不保證唯一,停止工作名稱時請使用 WhatIf 和 Confirm 參數。

參數屬性

類型:

String[]

預設值:All jobs
支援萬用字元:True
不要顯示:False

參數集

NameParameterSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值:False

-PassThru

返回一個物件,代表您正在處理的項目。 根據預設,此 Cmdlet 不會產生任何輸出。

參數屬性

類型:SwitchParameter
預設值:False
支援萬用字元:False
不要顯示:False

參數集

(All)
Position:Named
必要:False
來自管線的值:False
來自管線按屬性名稱的值:False
來自剩餘引數的值:False

-State

指定工作狀態。 此指令檔只會停止指定狀態下的作業。 此參數可接受的值為:

  • NotStarted
  • Running
  • Completed
  • Failed
  • Stopped
  • Blocked
  • Suspended
  • Disconnected
  • Suspending
  • Stopping

欲了解更多就業狀態資訊,請參閱 JobState Enumeration。

參數屬性

類型:JobState
預設值:All jobs
接受的值:NotStarted, Running, Completed, Failed, Stopped, Blocked, Suspended, Disconnected, Suspending, Stopping, AtBreakpoint
支援萬用字元:False
不要顯示:False

參數集

StateParameterSet
Position:0
必要:True
來自管線的值:False
來自管線按屬性名稱的值:True
來自剩餘引數的值: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。

輸入

System.Management.Automation.RemotingJob

你可以把工作物件管線到這個 cmdlet。

輸出

None

根據預設,此 Cmdlet 不會傳回任何輸出。

System.Management.Automation.PSRemotingJob

當你使用 PassThru 參數時,這個 cmdlet 會回傳一個工作物件。

備註

PowerShell 包含下列 Stop-Job的別名:

  • 所有平臺:
    • spjb