Cmdlet 可以在內部或 Windows PowerShell背景工作執行其動作。 當 Cmdlet 以背景工作的形式執行時,工作會以異步方式在與 Cmdlet 所使用的管線線程分開的線程中完成。 從用戶的觀點來看,當 Cmdlet 以背景工作的形式執行時,即使作業需要較長的時間才能完成,命令提示字元仍會立即傳回,而且使用者可以在作業執行時繼續,而不會中斷。
背景作業、子作業和作業存放庫
支援背景工作之 Cmdlet 所傳回的工作物件會定義作業。 (Start-Job Cmdlet 也會傳回作業物件。作業的名稱、用來指定作業的標識碼、狀態資訊,以及子作業都包含在此定義中。 作業不會執行任何工作。 每個背景工作至少有一個子作業,因為子作業會執行實際工作。 當您執行 Cmdlet 讓工作以背景工作執行時,Cmdlet 必須將作業和子作業新增至通用存放庫,稱為 作業存放庫。
如需如何在命令行處理背景工作的詳細資訊,請參閱下列各項:
撰寫以背景工作形式執行的 Cmdlet
若要撰寫可作為背景工作執行的 Cmdlet,您必須完成下列工作:
定義
asJobswitch 參數,讓使用者可以決定是否要以背景工作的形式執行 Cmdlet。建立衍生自 System.Management.Automation.Job 類別的物件。 此物件可以是自定義作業物件或 Windows PowerShell 所提供的作業物件,例如 System.Management.Automation.PSEventJob 物件。
在記錄處理方法中,新增
if語句,以偵測 Cmdlet 是否應該以背景工作的形式執行。針對自定義作業對象,實作作業類別。
根據 Cmdlet 是否以背景工作的形式執行,傳回適當的物件。
如需程式代碼範例,請參閱 如何支援作業。
背景 Job-Related API
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 來管理背景工作。
取得在目前會話中執行的 Windows PowerShell 背景工作。
取得目前會話中 Windows PowerShell 背景工作的結果。
刪除 Windows PowerShell 背景工作。
啟動 Windows PowerShell 背景工作。
停止 Windows PowerShell 背景工作。
隱藏命令提示字元,直到會話中執行的一或所有 Windows PowerShell 背景工作完成為止。