ja-JP/about_Jobs.help.txt

TOPIC
    about_Jobs

簡単な説明
    PowerShell でコマンドをバックグラウンドで実行するジョブの仕組みに
    ついて説明します。

詳細な説明
    PowerShell はコマンドを同時に実行するために、ジョブという仕組みを
    提供します。ジョブを使うと、長時間かかるコマンドをバックグラウンドで
    実行し、その間もコマンドプロンプトを使い続けることができます。

    PowerShell には次の 3 種類のジョブがあります。

        RemoteJob
            コマンドをリモートセッションで実行します。

        BackgroundJob
            コマンドをローカルの別プロセスで実行します。

        PSTaskJob / ThreadJob
            コマンドを同じプロセス内の別スレッドで実行します。

    リモートジョブとバックグラウンドジョブはプロセスが分離されるため
    堅牢ですが、データのシリアル化に伴うオーバーヘッドがあります。
    スレッドベースのジョブはオーバーヘッドが少なく高速ですが、堅牢性は
    劣ります。1 つのジョブでプロセスをクラッシュさせる重大なエラーが発生
    すると、同じプロセス内のほかのジョブもすべて終了します。

  ジョブ用コマンドレット
    コマンドレット 説明
    -------------- ----
    Start-Job ローカルコンピューターでバックグラウンドジョブを
                       開始します。
    Get-Job 現在のセッションで開始したジョブを取得します。
    Receive-Job ジョブの結果を取得します。
    Stop-Job ジョブを停止します。
    Wait-Job ジョブが完了するまでプロンプトを抑制します。
    Remove-Job ジョブを削除します。
    Invoke-Command -AsJob パラメーターでリモートジョブを作成します。

  ローカルコンピューターでジョブを開始する
    Start-Job に -ScriptBlock パラメーターでスクリプトブロックを渡して
    ジョブを開始します。コマンドプロンプトはすぐに戻ります。

        $job = Start-Job -ScriptBlock { Get-Process }

    PowerShell 6.0 以降では、バックグラウンド演算子(&)でも同じことが
    できます。

        $job = Get-Process &

  ジョブオブジェクトのプロパティ
    ジョブオブジェクトには次のプロパティがあります。

        Id 現在のセッション内でジョブを識別する番号
        Name ジョブの名前(既定では Job1、Job2 ...)
        PSJobTypeName ジョブの種類(BackgroundJob、RemoteJob など)
        State ジョブの状態
        HasMoreData 未取得の結果があるかどうか
        Location ジョブが実行された場所
        Command ジョブが実行したコマンド

    State プロパティには次のような値があります。

        Completed(完了)、Failed(失敗)、Blocked(ブロック)、
        Running(実行中)

  ジョブオブジェクトを取得する
    Get-Job コマンドレットは、現在のセッションで開始したすべてのジョブを
    取得します。

        Get-Job

  ジョブの結果を取得する
    Receive-Job コマンドレットはジョブの結果を取得します。

        $results = Receive-Job -Job $job

    既定では、取得した結果はキャッシュから削除されます。-Keep パラメーターを
    使うと、結果をキャッシュに残し、複数回取得できます。

        $results = Receive-Job -Job $job -Keep

  ジョブの完了を待つ
    Wait-Job コマンドレットは、ジョブが完了するまでプロンプトを抑制します。
    -Timeout パラメーターで待機時間の上限を秒単位で指定できます。

        Wait-Job -Id 10 -Timeout 120

    Receive-Job の -Wait パラメーターでも、完了まで待ってから結果を
    取得できます。

  ジョブの失敗を調べる
    ジョブが失敗した場合は、子ジョブの Reason プロパティで詳細を
    確認できます。

        $job.ChildJobs[0].JobStateInfo.Reason

関連項目
    about_Job_Details
    about_Remote_Jobs
    about_Thread_Jobs
    Start-Job
    Get-Job
    Receive-Job
    Wait-Job
    Stop-Job
    Remove-Job
    Invoke-Command
    Start-ThreadJob

----
原文: PowerShell-Docs (CC BY 4.0) の翻訳 / PSHelpJaJP