PowerShell Alias - rcjb
 記事記号:[mdAc88] 初版:2010/Dec/28

この文書は、Windows PowerShellのヘルプ機能で表示される内容を再構成したものです。

名前
    Receive-Job
    
概要
    現在のセッションの Windows PowerShell バックグラウンド ジョブの結果を取得し
    ます。
    
構文
    Receive-Job [-Job] <Job[]> [[-ComputerName] <string[]>] [-Keep] 
    [-NoRecurse] [<CommonParameters>]
    
    Receive-Job [[-InstanceId] <Guid[]>] [-Keep] [-NoRecurse] [<CommonP
    arameters>]
    
    Receive-Job [-Job] <Job[]> [[-Location] <string[]>] [-Keep] [-No
    Recurse] [<CommonParameters>]
    
    Receive-Job [[-Name] <string[]>] [-Keep] [-NoRecurse] [<CommonParam
    eters>]
    
    Receive-Job [-Job] <Job[]> [[-Session] <PSSession[]>] [-Keep] [-
    NoRecurse] [<CommonParameters>]
    
    Receive-Job [-Id] <Int32[]> [-Keep] [-NoRecurse] [<CommonParameters
    >]
    
説明
    Receive-Job コマンドレットは、Windows PowerShell バックグラウンド ジョブの結
    果を取得します。Receive-Job を使用して、Start-Job コマンドレットまたはいずれ
    かのコマンドレットの AsJob パラメーターを使用して開始されたジョブの結果を取
    得します。すべてのジョブの結果を取得したり、名前、ID、インスタンス ID、コン
    ピューター名、場所、またはセッションに基づいてジョブを識別したり、ジョブ オ
    ブジェクトを送信することによってジョブを識別することができます。
    
    Windows PowerShell のバックグラウンド ジョブを開始すると、ジョブは開始されま
    すが、その結果は直ちに表示されません。代わりに、コマンドはバックグラウンド 
    ジョブを表すオブジェクトを返します。ジョブ オブジェクトには、ジョブに関する
    有用な情報が含まれています。ただし、ジョブの結果は含まれません。このメソッド
    を使用すると、ジョブの実行中も引き続きセッションで作業できます。Windows Powe
    rShell のバックグラウンド ジョブの詳細については、「about_Jobs」を参照してく
    ださい。
    
    コマンドの結果を取得するには、Receive-Job コマンドレットを使用します。Receiv
    e-Job は、Receive-Job コマンドが送信されるまでに生成された結果を取得します。
    結果が完了していない場合は、追加の Receive-Job コマンドを実行して、残りの結
    果を取得することができます。
    
    既定では、ジョブの結果は、結果を取得した際にシステムから削除されますが、結果
    を再取得できるように、Keep パラメーターを使用して結果を保存することが可能です。
    ジョブの結果を削除するには、Keep パラメーターを指定せずに結果を再取得するか、
    セッションを終了するか、Remove-Job コマンドレットを使用してジョブをセッション
    から削除します。
    
パラメーター
    -ComputerName <string[]>
        指定されたコンピューターで実行されたジョブの結果を取得します。コンピュー
        ター名を入力します。既定値は現在のセッションのすべてのジョブです。
        
        このパラメーターは、ローカル コンピューターに保存されているジョブの結果
        の中から結果を選択します。データはリモート コンピューターからは取得され
        ません。リモート コンピューターに保存されているジョブの結果を取得するに
        は、Invoke-Command コマンドレットを使用して、リモートで Receive-Job コマ
        ンドを実行します。
        
        必須                         false
        位置                         2
        既定値                       
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する false
        
    -Id <Int32[]>
        指定された ID を持つジョブの結果を取得します。既定値は現在のセッションの
        すべてのジョブです。
        
        ID は、現在のセッション内のジョブを一意に識別する整数です。インスタンス 
        ID よりも覚えやすく入力も容易ですが、一意であるのは現在のセッション内のみ
        です。1 つまたは複数の ID (コンマで区切る) を入力できます。ジョブの ID を
        検索するには、パラメーターを指定せずに「Get-Job」と入力します。
        
        必須                         true
        位置                         1
        既定値                       
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する false
        
    -InstanceId <Guid[]>
        指定されたインスタンス ID を持つジョブの結果を取得します。既定値は現在の
        セッションのすべてのジョブです。
        
        インスタンス ID は、コンピューターのジョブを一意に識別する GUID です。ジ
        ョブのインスタンス ID を見つけるには、Get-Job コマンドレットを使用します。
        
        必須                         false
        位置                         1
        既定値                       
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する false
        
    -Job <Job[]>
        結果を取得するジョブを指定します。このパラメーターは Receive-Job コマン
        ドで必要です。ジョブを格納する変数を入力するか、ジョブを取得するコマンド
        を入力します。パイプを使用してジョブ オブジェクトを Receive-Job に渡すこ
        ともできます。
        
        必須                         true
        位置                         1
        既定値                       
        パイプライン入力を許可する   true (ByValue, ByPropertyName)
        ワイルドカード文字を許可する false
        
    -Keep [<SwitchParameter>]
        ジョブの結果を受信後でもシステムに保存します。既定では、ジョブの結果は、
        取得されたときに削除されます。
        
        結果を削除するには、Keep パラメーターを指定せずに Receive-Job を使用して
        結果を再取得するか、セッションを終了するか、Remove-Job コマンドレットを
        使用してジョブをセッションから削除します。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Location <string[]>
        指定された場所のジョブの結果のみを取得します。既定値は現在のセッションの
        すべてのジョブです。
        
        必須                         false
        位置                         2
        既定値                       
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する false
        
    -Name <string[]>
        指定されたフレンドリ名を持つジョブの結果を取得します。既定値は現在のセッ
        ションのすべてのジョブです。
        
        必須                         false
        位置                         1
        既定値                       
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する false
        
    -NoRecurse [<SwitchParameter>]
        指定されたジョブからのみ結果を取得します。既定では、Receive-Job によって、
        指定したジョブのすべての子ジョブの結果も取得されます。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   false
        ワイルドカード文字を許可する false
        
    -Session <PSSession[]>
        指定された Windows PowerShell セッション (PSSession) で実行されたジョブ
        の結果を取得します。PSSession を格納する変数を入力するか、Get-PSSession 
        コマンドなど、PSSession を取得するコマンドを入力します。既定値は現在のセ
        ッションのすべてのジョブです。
        
        必須                         false
        位置                         2
        既定値                       
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する false
        
    <CommonParameters>
        このコマンドレットは、次の共通パラメーターをサポートします: Verbose、
        Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、
        OutBuffer、および OutVariable。詳細については、
        「get-help about_commonparameters」と入力してヘルプを参照してください。
    
入力
    System.Management.Automation.Job
        パイプを使用してジョブ オブジェクトを Receive-Job に渡すことができます。
    
出力
    PSObject
        Receive-Job は、ジョブのコマンドの結果を返します。
    
メモ
    -------------------------- 例 1 --------------------------
    C:\PS>$job = start-job -scriptblock {get-process}
    
    C:\PS> receive-job -job $job
    
    説明
    -----------
    これらのコマンドは Job パラメーターを使用して、特定のジョブの結果を取得しま
    す。最初のコマンドは、Start-Job コマンドレットを使用して、"Get-Process" コマ
    ンドを実行するジョブを開始しますこのコマンドは、代入演算子 (=) を使用して、$
    job 変数に結果のジョブ オブジェクトを保存します。
    
    2 番目のコマンドは、Receive-Job コマンドレットを使用してジョブの結果を取得し
    ます。ジョブは Job パラメーターを使用して指定しています。
    
    -------------------------- 例 2 --------------------------
    C:\PS>$job = start-job -scriptblock {get-process}
    
    C:\PS> $job | receive-job
        
    説明
    -----------
    この例は、コマンドがパイプライン演算子 (|) を使用して、ジョブ オブジェクトを 
    Receive-Job に渡すことを除いて、例 2 と同じです。その結果、コマンドには、ジ
    ョブを指定するための Job パラメーターは必要ありません。
    
    -------------------------- 例 3 --------------------------
    C:\PS>$j = invoke-command -computername Server01, Server02, Server03 -scr
    iptblock {get-service} -AsJob
    
    C:\PS> $j.childjobs
    
    Id   Name     State      HasMoreData   Location       Command
    --   ----     -----      -----------   --------       -------
    2    Job2     Completed  True          Server01       get-service
    3    Job3     Completed  True          Server02       get-service
    4    Job4     Completed  True          Server03       get-service
    
    C:\PS> receive-job -name Job3  -keep
    
    Status  Name        DisplayName                        PSComputerName
    ------  ----------- -----------                        --------------
    Running AeLookupSvc Application Experience             Server02
    Stopped ALG         Application Layer Gateway Service  Server02
    Running Appinfo     Application Information            Server02
    Running AppMgmt     Application Management             Server02
    
    説明
    -----------
    これらのコマンドは、Receive-Job の Name パラメーターを使用して、リモート コ
    ンピューターで実行される複数のバックグラウンド ジョブのうちの 1 つの結果を取
    得します。
    
    最初のコマンドは、Invoke-Command コマンドレットを使用して、3 台のリモート コ
    ンピューター上で Get-Service コマンドを実行するバックグラウンド ジョブを開始
    します。また、AsJob パラメーターを使用して、バックグラウンド ジョブとしてコマ
    ンドを実行します。このコマンドは、結果のジョブ オブジェクトを $j 変数に保存し
    ます。
    
    ジョブを開始するために Invoke-Command の AsJob パラメーターを使用すると、ジョ
    ブはリモート コンピューターで実行されますが、ジョブ オブジェクトはローカル コ
    ンピューターに作成されます。そのため、ローカル コマンドを使用してジョブを管理
    します。
    
    また、AsJob を使用すると、Windows PowerShell は、開始された各ジョブに対応する
    子ジョブを含む 1 つのジョブ オブジェクトを返します。この場合、ジョブ オブジェ
    クトには、各リモート コンピューター上でそれぞれ実行されるジョブに対応する 3 
    つの子ジョブが含まれます。
    
    2 番目のコマンドは、ドット メソッドを使用して、$j のジョブ オブジェクトの Chi
    ldJobs プロパティの値を表示します。この表示には、各リモート コンピューター上
    でそれぞれ実行されるジョブに対応する 3 つの子ジョブがコマンドによって作成され
    たことが示されます。
     
    3 番目のコマンドは、Receive-Job コマンドレットを使用して、Server02 コンピュ
    ーターで実行された子ジョブ Job3 の結果を取得します。このコマンドは、子ジョブ
    の名前を指定するために Name パラメーターを、ジョブの結果を取得後も保存するた
    めに Keep パラメーターをそれぞれ使用します。
    
    -------------------------- 例 4 --------------------------
    C:\PS>$s = new-pssession -computername Server01, Server02, Server03
    
    C:\PS> $j = invoke-command -session $s -scriptblock {start-job -scriptblo
    ck {get-eventlog -logname system}}
    
    C:\PS> $j
    
    Id   Name     State      HasMoreData   Location   Command
    --   ----     -----      -----------   --------   -------
    1    Job1     Completed  True          Localhost  get-eventlog system
    2    Job2     Completed  True          Localhost  get-eventlog system
    3    Job3     Completed  True          Localhost  get-eventlog system
    
    C:\PS> $results = invoke-command -session $s -scriptblock {param($j) rece
    ive-job -job $j} -ArgumentList $j
    
    説明
    -----------
    この例は、3 台のリモート コンピューターで実行されるバックグラウンド ジョブの
    結果を取得する方法を示しています。
    
    最初のコマンドは、New-PSSession コマンドレットを使用して、コマンドで指定され
    た各サーバーでそれぞれ実行される 3 つの PSSession を作成します。PSSession は 
    $s 変数に保存されます。
    
    2 番目のコマンドは、Invoke-Command コマンドレットを使用して、$s 変数の各 PSS
    ession で Start-Job コマンドを実行します。ジョブは、システム ログ内のイベン
    トを取得する Get-Eventlog コマンドを実行します。結果は $j 変数に保存されます。
    
    コマンドは Invoke-Command を使用して Start-Job コマンドを実行したため、実際
    には 3 台のコンピューターのそれぞれで独立した 3 つのジョブが開始されました。
    その結果、コマンドは、3 台の異なるコンピューターでローカルに実行された 3 つ
    のジョブを表す 3 つのジョブ オブジェクトを返しました。
    
    3 番目のコマンドは $j の 3 つのジョブ オブジェクトを表示します。
    
    4 番目のコマンドは、Invoke-Command を使用して、$s の各PSSessions で Receive- 
    Job コマンドを実行し、結果を $results 変数に保存します。
    
    $j はローカル変数であるため、スクリプト ブロックは "param" キーワードを使用
    してコマンドの変数を宣言し、ArgumentList パラメーターを使用して $j の値を指
    定します。
    
関連するリンク
    Online version: http://go.microsoft.com/fwlink/?LinkID=113372
    about_Jobs 
    about_Job_Details 
    about_Remote_Jobs 
    Start-Job 
    Get-Job 
    Wait-Job 
    Stop-Job 
    Remove-Job 
    Invoke-Command 
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Alias、rcjb
ご利用数: 1918348
感想・要望・問い合わせは こちら