共用方式為


背景工作

Cmdlet 可以在內部或 Windows PowerShell背景工作執行其動作。 當 Cmdlet 以背景工作的形式執行時,工作會以異步方式在與 Cmdlet 所使用的管線線程分開的線程中完成。 從用戶的觀點來看,當 Cmdlet 以背景工作的形式執行時,即使作業需要較長的時間才能完成,命令提示字元仍會立即傳回,而且使用者可以在作業執行時繼續,而不會中斷。

背景作業、子作業和作業存放庫

支援背景工作之 Cmdlet 所傳回的工作物件會定義作業。 (Start-Job Cmdlet 也會傳回作業物件。作業的名稱、用來指定作業的標識碼、狀態資訊,以及子作業都包含在此定義中。 作業不會執行任何工作。 每個背景工作至少有一個子作業,因為子作業會執行實際工作。 當您執行 Cmdlet 讓工作以背景工作執行時,Cmdlet 必須將作業和子作業新增至通用存放庫,稱為 作業存放庫

如需如何在命令行處理背景工作的詳細資訊,請參閱下列各項:

撰寫以背景工作形式執行的 Cmdlet

若要撰寫可作為背景工作執行的 Cmdlet,您必須完成下列工作:

  • 定義 asJob switch 參數,讓使用者可以決定是否要以背景工作的形式執行 Cmdlet。

  • 建立衍生自 System.Management.Automation.Job 類別的物件。 此物件可以是自定義作業物件或 Windows PowerShell 所提供的作業物件,例如 System.Management.Automation.PSEventJob 物件。

  • 在記錄處理方法中,新增 if 語句,以偵測 Cmdlet 是否應該以背景工作的形式執行。

  • 針對自定義作業對象,實作作業類別。

  • 根據 Cmdlet 是否以背景工作的形式執行,傳回適當的物件。

如需程式代碼範例,請參閱 如何支援作業

Windows PowerShell 提供下列 API 來管理背景工作。

System.Management.Automation.Job 衍生自定義作業物件。 這是抽象類。

System.Management.Automation.JobRepository 管理並提供目前作用中背景工作的相關信息。

System.Management.Automation.JobState 定義背景工作的狀態。 狀態包括 [已啟動]、[執行中] 和 [已停止]。

System.Management.Automation.JobStateInfo 提供背景工作狀態的相關信息,如果最後一個狀態變更是由錯誤所造成,作業進入其目前狀態的原因。

System.Management.Automation.JobStateEventArgs 提供背景作業變更狀態時引發之事件的自變數。

Windows PowerShell 作業 Cmdlet

Windows PowerShell 提供下列 Cmdlet 來管理背景工作。

Get-Job(取得工作)

取得在目前會話中執行的 Windows PowerShell 背景工作。

接收作業

取得目前會話中 Windows PowerShell 背景工作的結果。

Remove-Job

刪除 Windows PowerShell 背景工作。

啟動作業

啟動 Windows PowerShell 背景工作。

停止作業

停止 Windows PowerShell 背景工作。

Wait-Job

隱藏命令提示字元,直到會話中執行的一或所有 Windows PowerShell 背景工作完成為止。

另請參閱

撰寫 Windows PowerShell Cmdlet