次の方法で共有


バックグラウンド ジョブ

コマンドレットは、内部的に、またはバックグラウンド ジョブ としてWindows PowerShell 実行できます。 コマンドレットがバックグラウンド ジョブとして実行されると、その作業は、コマンドレットが使用しているパイプライン スレッドとは別の独自のスレッドで非同期的に実行されます。 ユーザーの観点からは、コマンドレットがバックグラウンド ジョブとして実行されると、ジョブの完了に長い時間がかかる場合でも、コマンド プロンプトはすぐに返され、ユーザーはジョブの実行中に中断することなく続行できます。

バックグラウンド ジョブ、子ジョブ、およびジョブ リポジトリ

バックグラウンド ジョブをサポートするコマンドレットによって返されるジョブ オブジェクトによって、ジョブが定義されます。 (Start-Job コマンドレットは、ジョブ オブジェクトも返します)。この定義には、ジョブの名前、ジョブの指定に使用される識別子、状態情報、および子ジョブが含まれます。 ジョブは、どの作業も実行しません。 子ジョブは実際の作業を実行するために、各バックグラウンド ジョブには少なくとも 1 つの子ジョブがあります。 作業がバックグラウンド ジョブとして実行されるコマンドレットを実行する場合、コマンドレットは、ジョブ リポジトリ と呼ばれる共通リポジトリにジョブと子ジョブを追加 する必要があります

コマンド ラインでのバックグラウンド ジョブの処理方法の詳細については、次を参照してください。

バックグラウンド ジョブとして実行されるコマンドレットの記述

バックグラウンド ジョブとして実行できるコマンドレットを記述するには、次のタスクを実行する必要があります。

  • ユーザーがコマンドレットをバックグラウンド ジョブとして実行するかどうかを決定できるよう asJob 、switch パラメーターを定義します。

  • System.Management.Automation.Jobクラスから派生する オブジェクトを作成します。 このオブジェクトには、カスタム ジョブ オブジェクトまたはsystem.Management.Automation.Pseventjobオブジェクトなど、Windows PowerShell によって提供されるジョブ オブジェクトを指定できます。

  • レコード処理メソッドに、コマンドレットをバックグラウンド ジョブとして実行するかどうかを検出 if するステートメントを追加します。

  • カスタム ジョブ オブジェクトの場合は、ジョブ クラスを実装します。

  • コマンドレットがバックグラウンド ジョブとして実行されるかどうかに応じて、適切な オブジェクトを返します。

コード例については、「ジョブをサポート する方法」を参照してください

バックグラウンド ジョブを管理するために、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ジョブ コマンドレット

次のコマンドレットは、バックグラウンド ジョブを管理Windows PowerShellによって提供されます。

Get-Job

現在のセッションで実行されている Windows PowerShell のバックグラウンド ジョブを取得します。

Receive-Job

現在のセッションの Windows PowerShell バックグラウンド ジョブの結果を取得します。

Remove-Job

Windows PowerShell バックグラウンド ジョブを削除します。

Start-Job

Windows PowerShell バックグラウンド ジョブを開始します。

Stop-Job

Windows PowerShell バックグラウンド ジョブを停止します。

Wait-Job

セッションで実行されている 1 つまたはすべての Windows PowerShell のバックグラウンド ジョブが完了するまでは、コマンド プロンプトが表示されないようにします。

参照

Writing a Windows PowerShell Cmdlet (Windows PowerShell コマンドレットの記述)