PowerShell Alias - gjb
 記事記号:[mdAc87] 初版:2010/Dec/28

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

名前
    Get-Job
    
概要
    現在のセッションで実行中の Windows PowerShell バックグラウンド ジョブを取得
    します。
    
構文
    Get-Job [-Command <string[]>] [<CommonParameters>]
    
    Get-Job [[-InstanceId] <Guid[]>] [<CommonParameters>]
    
    Get-Job [[-Name] <string[]>] [<CommonParameters>]
    
    Get-Job [[-Id] <Int32[]>] [<CommonParameters>]
    
    Get-Job [-State {NotStarted | Running | Completed | Failed | Stopped | Block
    ed}] [<CommonParameters>]
    
説明
    Get-Job コマンドレットは、現在のセッションで開始されたバックグラウンド ジョ
    ブを表すオブジェクトを取得します。Get-Job を使用すると、Start-Job または任意
    のコマンドレットの AsJob パラメーターを使用して開始されたジョブを取得できま
    す。
    
    パラメーターが指定されていない場合、"Get-Job" コマンドは現在のセッションのす
    べてのジョブを取得します。Get-Job のパラメーターを使用して、特定のジョブを取
    得できます。
    
    Get-Job が返すジョブ オブジェクトには、ジョブに関する有用な情報が含まれてい
    ます。ただし、ジョブの結果は含まれません。ジョブの結果を取得するには、Receiv
    e-Job コマンドレットを使用します。
    
    Windows PowerShell バックグラウンド ジョブは、現在のセッションと対話すること
    なく "バックグラウンドで" 実行されるコマンドです。通常、バックグラウンド ジ
    ョブは、完了に時間のかかる複雑なコマンドを実行するために使用されます。Window
    s PowerShell のバックグラウンド ジョブの詳細については、「about_Jobs」を参照
    してください。
    
パラメーター
    -Command <string[]>
        指定されたコマンドを含むジョブを取得します。既定値はすべてのジョブです。
        コマンドを文字列として入力します。ワイルドカードを使用してコマンド パタ
        ーンを指定できます。
        
        必須                         false
        位置                         named
        既定値                       すべてのジョブ
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する true
        
    -Id <Int32[]>
        指定された ID を持つジョブのみを取得します。
        
        ID は、現在のセッション内のジョブを一意に識別する整数です。インスタンス 
        ID よりも覚えやすく入力も容易ですが、一意であるのは現在のセッション内の
        みです。1 つまたは複数の ID (コンマで区切る) を入力できます。ジョブの ID
        を検索するには、パラメーターを指定せずに「Get-Job」と入力します。
        
        必須                         false
        位置                         1
        既定値                       
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する false
        
    -InstanceId <Guid[]>
        指定されたインスタンス ID を持つジョブを取得します。既定値はすべてのジョ
        ブです。
        
        インスタンス ID は、コンピューターのジョブを一意に識別する GUID です。ジ
        ョブのインスタンス ID を検索するには、Get-Job を使用します。
        
        必須                         false
        位置                         1
        既定値                       
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する true
        
    -Name <string[]>
        指定されたフレンドリ名のジョブを取得します。ジョブ名を入力するか、ワイル
        ドカード文字を使用してジョブ名のパターンを入力します。既定では、Get-Job 
        は現在のセッションのすべてのジョブを取得します。
        
        必須                         false
        位置                         1
        既定値                       
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する true
        
    -State <JobState>
        指定された状態のジョブのみを取得します。有効な値は、NotStarted、Running、
        Completed、Stopped、Failed、および Blocked です。既定では、Get-Job は現
        在のセッションのすべてのジョブを取得します。
        
        必須                         false
        位置                         named
        既定値                       
        パイプライン入力を許可する   true (ByPropertyName)
        ワイルドカード文字を許可する false
        
    <CommonParameters>
        このコマンドレットは、次の共通パラメーターをサポートします: Verbose、
        Debug、ErrorAction、ErrorVariable、WarningAction、WarningVariable、
        OutBuffer、および OutVariable。詳細については、
        「get-help about_commonparameters」と入力してヘルプを参照してください。
    
入力
    None
        パイプを使用してこのコマンドレットに入力を渡すことはできません。
    
出力
    System.Management.Automation.RemotingJob
        Get-Job は、セッション内のジョブを表すオブジェクトを返します。
    
メモ
    -------------------------- 例 1 --------------------------
    C:\PS>get-job
    
    説明
    -----------
    このコマンドは、現在のセッションで開始されたすべてのバックグラウンド ジョブ
    を取得します。ジョブがローカル コンピューターで実行されている場合も含め、他
    のセッションで作成されたジョブは含まれません。
    
    -------------------------- 例 2 --------------------------
    C:\PS>$j = get-job -name Job1
    
    C:\PS> $ID = $j.InstanceID
    
    C:\PS> $ID
    
    Guid
    ----
    03c3232e-1d23-453b-a6f4-ed73c9e29d55
    
    C:\PS> stop-job -instanceid $ID
    
    説明
    -----------
    これらのコマンドは、ジョブのインスタンス ID を取得し、それを使用してジョブを
    停止する方法を示しています。ジョブ名は一意ではありませんが、インスタンス ID 
    は一意です。
    
    最初のコマンドは、Get-Job コマンドレットを使用してジョブを取得します。ジョブ
    は Name パラメーターを使用して識別しています。Get-Job によって返されるジョブ 
    オブジェクトは、$j 変数に保存されます。この例では、指定された名前のジョブは 
    1 つしかありません。
    
    2 番目のコマンドは、$j 変数に保存されているオブジェクトの InstanceId プロパテ
    ィを取得して、$ID 変数に保存します。
    
    3 番目のコマンドは、$ID 変数の値を表示します。
    
    4 番目のコマンドは、Stop-Job コマンドレットを使用してジョブを終了します。Ins
    tanceId パラメーターを使用してジョブを識別し、$ID 変数を使用してジョブのイン
    スタンス ID を表します。
    
    -------------------------- 例 3 --------------------------
    C:\PS>get-job -command "*get-process*"
    
    説明
    -----------
    このコマンドは、システム上で Get-Process コマンドを含むジョブを取得します。
    このコマンドは、Get-Job の Command パラメーターを使用して、取得されるジョブ
    を制限します。また、ワイルドカード文字 (*) を使用して、コマンド文字列に Get-
    Process コマンドを含むジョブを取得します。
    
    -------------------------- 例 4 --------------------------
    C:\PS>"*get-process*" | get-job
    
    説明
    -----------
    前の例のコマンドのように、このコマンドは、システム上で Get-Process コマンド
    を含むジョブを取得します。このコマンドは、パイプライン演算子 (|) を使用して、
    (二重引用符で囲まれた) 文字列を Get-Job コマンドレットに送ります。前のコマン
    ドと同等です。
    
    -------------------------- 例 5 --------------------------
    C:\PS>get-job -state NotStarted
    
    説明
    -----------
    このコマンドは、作成されただけで開始されていないジョブのみを取得します。これ
    には、今後の実行がスケジュールされているジョブとスケジュールされていないジョ
    ブが含まれます。
    
    -------------------------- 例 6 --------------------------
    C:\PS>get-job -name job*
    
    説明
    -----------
    このコマンドは、名前が "job" で始まるジョブをすべて取得します。"job<番号
    >" がジョブの既定の名前であるため、このコマンドは名前が明示的に割り当てら
    れていないジョブをすべて取得します。
    
    -------------------------- 例 7 --------------------------
    C:\PS>start-job -scriptblock {get-process} -name MyJob
    
    C:\PS> $j = get-job -name MyJob
    
    C:\PS> $j
    
    Id       Name      State      HasMoreData     Location    Command
    --       ----      -----      -----------     --------    -------
    1        myjob     Completed  True            localhost   get-process
    
    C:\PS> receive-job -job $j
    
    Handles  NPM(K)    PM(K)      WS(K) VM(M)   CPU(s)     Id ProcessName
    -------  ------    -----      ----- -----   ------     -- -----------
        124       4    13572      12080    59            1140 audiodg
        783      16    11428      13636   100             548 CcmExec
         96       4     4252       3764    59            3856 ccmsetup
    ...
    
    説明
    -----------
    この例は、Get-Job を使用してジョブ オブジェクトを取得する方法を示し、次にそ
    のジョブ オブジェクトを使用してコマンドのジョブを表す方法を示しています。
    
    最初のコマンドは Start-Job コマンドレットを使用して、ローカル コンピューター
    上で Get-Process コマンドを実行するバックグラウンド ジョブを開始します。この
    コマンドは、Start-Job の Name パラメーターを使用して、ジョブにフレンドリ名を
    割り当てます。
    
    2 番目のコマンドは、Get-Job を使用してジョブを取得します。Get-Job の Name パ
    ラメーターを使用してジョブを識別しています。このコマンドは、結果のジョブ オ
    ブジェクトを $j 変数に保存します。
    
    3 番目のコマンドは、$j 変数のジョブ オブジェクトの値を表示します。State プロ
    パティの値は、ジョブが完了したことを示しています。HasMoreData プロパティの値
    は、ジョブに、取得されていない利用可能な結果があることを示しています。
    
    4 番目のコマンドは、Receive-Job コマンドレットを使用してジョブの結果を取得し
    ます。$j 変数のジョブ オブジェクトを使用してジョブを表します。パイプライン演
    算子を使用して、ジョブ オブジェクトを Receive-Job に送信することもできます。
    
    -------------------------- 例 8 --------------------------
    C:\PS>start-job -scriptblock {get-eventlog system}
    
    C:\PS> invoke-command -computername S1 -scriptblock {get-eventlog system} 
    -AsJob
    
    C:\PS> invoke-command -computername S2 -scriptblock {start-job -scriptblo
    ck {get-eventlog system}}
    
    C:\PS> get-job
    
    Id    Name     State      HasMoreData   Location   Command
    --    ----     -----      -----------   --------   -------
    1     Job1     Running    True          localhost  get-eventlog system
    2     Job2     Running    True          S1         get-eventlog system
    
    C:\PS> invoke-command -computername S2 -scriptblock {get-job}
    
    Id    Name     State      HasMoreData   Location   Command
    --    ----     -----      -----------   --------   -------
    4     Job4     Running    True          localhost  get-eventlog system
    
    説明
    -----------
    この例は、異なるメソッドを使用して開始されたジョブも含め、Get-Job コマンドレ
    ットが現在のセッションで開始されたすべてのジョブを取得できることを示していま
    す。
    
    最初のコマンドは、Start-Job コマンドレットを使用して、ジョブをローカル コンピ
    ューター上で開始します。
    
    2 番目のコマンドは、Invoke-Command の AsJob パラメーターを使用して、ジョブを 
    S1 コンピューター上で開始します。ジョブのコマンドがリモート コンピューターで
    実行されていても、ジョブ オブジェクトはローカル コンピューターで作成されるた
    め、ローカル コマンドを使用してジョブを管理します。
    
    3 番目のコマンドは、Invoke-Command コマンドレットを使用して、S2 コンピュータ
    ーで Start-Job コマンドを実行します。このメソッドでは、リモート コンピュータ
    ー上にジョブ オブジェクトが作成されるため、リモート コマンドを使用してジョブ
    を管理します。
    
    4 番目のコマンドは、Get-Job を使用してローカル コンピューターに保存されたジ
    ョブを取得します。
    
    5 番目のコマンドは、Invoke-Command を使用して S2 コンピューターで Get-Job コ
    マンドを実行します。
    
    サンプル出力は、Get-Job コマンドの結果を示しています。
    
    リモート コンピューターでのバックグラウンド ジョブの実行については、「about_
    Remote_Jobs」を参照してください。
    
    -------------------------- 例 9 --------------------------
    C:\PS>start-job -scriptblock {get-process}
    
    Id       Name            State      HasMoreData     Location   Command
    --       ----            -----      -----------     --------   -------
    1        Job1            Failed     False           localhost  get-process
    
    C:\PS> (get-job).jobstateinfo | format-list -property *
    
    State  : Failed
    Reason :
    
    C:\PS> get-job | format-list *
    
    HasMoreData   : False
    StatusMessage :
    Location      : localhost
    Command       : get-process
    JobStateInfo  : Failed
    Finished      : System.Threading.ManualResetEvent
    InstanceId    : fb792295-1318-4f5d-8ac8-8a89c5261507
    Id            : 1
    Name          : Job1
    ChildJobs     : {Job2}
    Output        : {}
    Error         : {}
    Progress      : {}
    Verbose       : {}
    Debug         : {}
    Warning       : {}
    StateChanged  :
    
    C:\PS> (get-job -name job2).jobstateinfo.reason
    Connecting to remote server using WSManCreateShellEx api failed. The async c
    allback gave the following error message :Access is denied.
    
    説明
    -----------
    このコマンドは、Get-Job が返すジョブ オブジェクトを使用して、ジョブが失敗し
    た理由を調査する方法を示しています。各ジョブの子ジョブを取得する方法も示しま
    す。
    
    最初のコマンドは、Start-Job コマンドレットを使用して、ジョブをローカル コン
    ピューター上で開始します。Start-Job が返すジョブ オブジェクトは、ジョブが失
    敗したことを示しています。State プロパティの値は "Failed" です。
    
    2 番目のコマンドは、Get-Job を使用してジョブ オブジェクトを取得します。この
    コマンドはドット メソッドを使用して、オブジェクトの JobStateInfo プロパティ
    の値を取得します。パイプライン演算子を使用して、JobStateInfo プロパティのオ
    ブジェクトが Format-List コマンドレットに送信され、一覧にあるオブジェクトの
    すべてのプロパティ (*) が書式設定されます。
    
    Format-List コマンドの結果は、ジョブの Reason プロパティの値が空白であること
    を示しています。
    
    3 番目のコマンドは、さらに調査を行います。Get-Job コマンドを使用してジョブを
    取得し、パイプライン演算子を使用してジョブ オブジェクト全体を Format-List コ
    マンドレットに送信し、これにより一覧にあるジョブのプロパティがすべて表示され
    ます。
    
    ジョブ オブジェクトのすべてのプロパティの表示により、ジョブに "Job2" という
    名前の子ジョブが含まれることが示されています。
    
    4 番目のコマンドは、Get-Job を使用して子ジョブ Job2 を表すジョブ オブジェク
    トを取得します。これは、コマンドが実際に実行されたジョブです。このコマンドは
    ドット メソッドを使用して、JobStateInfo プロパティの Reason プロパティを取得
    します。
    
    結果は、"access denied" エラーが原因でジョブが失敗したことを示しています。こ
    の例では、ユーザーが Windows PowerShell の起動時に [管理者として実行] を使用
    しなかったと想定しています。
    
    バックグラウンド ジョブは Windows PowerShell のリモート処理機能を使用するた
    め、ジョブがローカル コンピューターで実行される場合でも、ジョブを実行するに
    はコンピューターがリモート処理用に構成されている必要があります。
    
    Windows PowerShell のリモート処理の要件については、「about_Remote_Requiremen
    ts」を参照してください。トラブルシューティングのヒントについては、「about_Re
    mote_Troubleshooting」を参照してください。
    
関連するリンク
    Online version: http://go.microsoft.com/fwlink/?LinkID=113328
    about_Jobs 
    about_Job_details 
    about_Remote_Jobs 
    Start-Job 
    Receive-Job 
    Wait-Job 
    Stop-Job 
    Remove-Job 
    Invoke-Command 
	
記事で解説しているパソコンの環境
 基本ソフト: Windows 7
 キーワード: Windows PowerShell、ヘルプ、Alias、gjb
ご利用数: 1913414
感想・要望・問い合わせは こちら