
記事記号:[mdAc87] 初版:2010/Dec/28

名前
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