WinRM Windows PowerShell コマンドレットを使った BITS 転送ジョブの管理
Windows リモート管理 PowerShell コマンドレットは、バックグラウンド インテリジェント転送サービス (BITS) 転送ジョブを管理できます。 BITS リモート管理の詳細については、BITS プロバイダーおよび BITS プロバイダー クラスに関するページを参照してください。
次の例では、BITS プロバイダーが必要です。 BITS プロバイダーは、BITS Compact サーバーのインストール後に使用できます。 コンパクトサーバーのインストールの詳細については、「BITS コンパクトサーバー」のドキュメントを参照してください。
BITS 転送ジョブを作成します。
# Get the credentials to connect to the remote client computer $cred = Get-Credential $result = Invoke-WsmanAction -Action CreateJob –Resourceuri wmi/root/microsoft/bits/BitsClientJob ` –Valueset @{DisplayName="TestJob"; RemoteUrl="https://Server01/servertestdir/testfile1.txt"; LocalFile="C:\clienttestdir\testfile1.txt";Type=0} ` –ComputerName Client1 -Credential $cred
Get-Credential コマンドレットは、リモート コンピューターに接続するようにユーザーの資格情報を要求し、その資格情報を $cred オブジェクトに割り当てます。
Invoke-WsmanAction コマンドレットは、BitsClientJob クラスのインスタンスを作成し、Valueset パラメーターで定義されているハッシュ テーブルの情報を使用して、Client1 で BITS 転送ジョブを作成します。 Valueset パラメーターは CreateJob メソッドのパラメーターを設定するために必要な情報を指定します。 前の例では、ユーザーは Type パラメーターを 0 (ダウンロード) に設定しています。 ユーザーは、ダウンロード ジョブのリモート ファイルとローカル ファイルの両方の名前も指定します。 BITS 転送ジョブの作成の詳細およびパラメーターの詳細については、CreateJob メソッドを参照してください。
Invoke-WsmanAction コマンドレットは、結果を $result 変数に割り当てます。
Note
アクセント記号文字 (`) は改行を示すために使用されます。
BITS 転送ジョブの優先順位を設定します。
Set-WsmanInstance -ResourceURI wmi/root/microsoft/bits/BitsClientJob -SelectorSet @{JobId=$result.JobId} ` -ValueSet @{Priority=0} –ComputerName Client1 -Credential $cred
Set-WsmanInstance コマンドレットは、新しい BITS 転送ジョブの優先順位を 0 (BG_JOB_PRIORITY_FOREGROUND) に変更します。 優先度レベルの詳細については、BG_JOB_PRIORITY 列挙型を参照してください。
BITS 転送ジョブを再開します。
Invoke-WsmanAction -Action SetJobState -ResourceUri wmi/root/microsoft/bits/BitsClientJob -selectorset @{JobId=$result.JobId} ` -valueset @{JobState= 2} –ComputerName Client1 -Credential $cred
Invoke-WsmanAction コマンドレットは SetJobState メソッドを呼び出し、ジョブの状態を 2 (ジョブの再開) に設定します。
BITS 転送ジョブを管理します。
$IsPprocessing = $TRUE while ($IsPprocessing) { $result = Get-WsmanInstance -ResourceURI wmi/root/microsoft/bits/BitsClientJob -selectorset @{JobId = $result.JobId} ` –ComputerName Client1 -Credential $cred if ($result.State -eq 6) { #Complete the job Invoke-WsmanAction -action SetJobState -resourceuri wmi/root/microsoft/bits/BitsClientJob -selectorset @{JobId=$result.JobId} ` -valueset @{JobState= 1} –ComputerName Client1 -Credential $cred "Job Successfully Transferred" $IsPprocessing = $FALSE; } elseif (($result.State -eq 4) -or ($result.State -eq 5)) { #Cancel the job "Job is in Error " Invoke-WsmanAction -action SetJobState -resourceuri wmi/root/microsoft/bits/BitsClientJob -selectorset @{JobId=$result.JobId} ` -valueset @{JobState= 0} –ComputerName Client1 -Credential $cred # You can troubleshoot or delete the job $IsPprocessing = $FALSE; } else { "Job is processing\n" } # Perform other action or poll in a tight loop. This example sleeps for 5 seconds sleep 5 }
前の例は、ジョブの状態をポーリングし、状態に基づいてアクションを実行するスクリプトです。 次のアクションを実行できます。
- $result の状態が 4 (BG_JOB_STATE_ERROR) の場合、Invoke-WsmanAction コマンドレットは SetJobState メソッドを呼び出してジョブを取り消します。
- $result の状態が 5 (BG_JOB_STATE_ERROR) の場合、Invoke-WsmanAction コマンドレットは SetJobState メソッドを呼び出して、ジョブを取り消します。
- $result の状態が 6 (BG_JOB_STATE_TRANSFERRED) の場合、Invoke-WsmanAction コマンドレットは SetJobState メソッドを呼び出し、完了するように状態を設定します。
ジョブの状態の詳細については、BG_JOB_STATE 列挙型を参照してください。
関連トピック