Verwenden von WinRM Windows PowerShell-Cmdlets zum Verwalten von BITS-Übertragungsaufträgen
PowerShell-Cmdlets der Windows-Remoteverwaltung können BITS-Übertragungsaufträge (Background Intelligent Transfer Service) verwalten. Weitere Informationen zur BITS-Remoteverwaltung finden Sie unter BITS-Anbieter und BITS-Anbieterklassen.
In den folgenden Beispielen ist der BITS-Anbieter erforderlich. Der BITS-Anbieter ist verfügbar, nachdem der BITS Compact-Server installiert wurde. Informationen zum Installieren des Compact-Servers finden Sie in der Dokumentation zu BITS Compact Server .
Erstellen Sie einen BITS-Übertragungsauftrag.
# 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
Das Cmdlet Get-Credential fordert die Anmeldeinformationen des Benutzers an, um eine Verbindung mit dem Remotecomputer herzustellen, und weist die Anmeldeinformationen dem $cred-Objekt zu.
Das Cmdlet Invoke-WsmanAction erstellt den BITS-Übertragungsauftrag auf Client1, indem eine instance der BitsClientJob-Klasse erstellt und die Informationen in der Hashtabelle verwendet werden, die im Valueset-Parameter definiert ist. Der Valueset-Parameter gibt die Informationen an, die zum Auffüllen der Parameter der CreateJob-Methode erforderlich sind. Im vorherigen Beispiel legt der Benutzer den Type-Parameter auf 0 (Download) fest. Der Benutzer gibt auch den Namen der Remote- und der lokalen Dateien für den Downloadauftrag an. Weitere Informationen zum Erstellen von BITS-Übertragungsaufträgen und ausführliche Informationen zu Parametern finden Sie unter CreateJob-Methode .
Das Cmdlet Invoke-WsmanAction weist das Ergebnis der variablen $result zu.
Hinweis
Das Grave-Accent-Zeichen (') wird verwendet, um einen Zeilenumbruch anzugeben.
Legen Sie die Priorität des BITS-Übertragungsauftrags fest.
Set-WsmanInstance -ResourceURI wmi/root/microsoft/bits/BitsClientJob -SelectorSet @{JobId=$result.JobId} ` -ValueSet @{Priority=0} –ComputerName Client1 -Credential $cred
Das Cmdlet Set-WsmanInstance ändert die neue BITS-Übertragungsauftragspriorität in 0 (BG_JOB_PRIORITY_FOREGROUND). Weitere Informationen zu den Prioritätsstufen finden Sie in der BG_JOB_PRIORITY-Enumeration .
Setzen Sie den BITS-Übertragungsauftrag fort.
Invoke-WsmanAction -Action SetJobState -ResourceUri wmi/root/microsoft/bits/BitsClientJob -selectorset @{JobId=$result.JobId} ` -valueset @{JobState= 2} –ComputerName Client1 -Credential $cred
Das Cmdlet Invoke-WsmanAction ruft die SetJobState-Methode auf, die den Auftragsstatus auf 2 (Auftrag fortsetzen) festlegt.
Verwalten Sie den BITS-Übertragungsauftrag.
$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 }
Das obige Beispiel ist ein Skript zum Abfragen der status des Auftrags und zum Ausführen einer Aktion basierend auf dem status. Die folgenden Aktionen sind möglich:
- Wenn $result. Status ist 4 (BG_JOB_STATE_ERROR), das Cmdlet Invoke-WsmanAction ruft die SetJobState-Methode auf und bricht den Auftrag ab.
- Wenn $result. Status ist 5 (BG_JOB_STATE_TRANSIENT_ERROR), das Cmdlet Invoke-WsmanAction ruft die SetJobState-Methode auf und bricht den Auftrag ab.
- Wenn $result. Status ist 6 (BG_JOB_STATE_TRANSFERRED), das Cmdlet Invoke-WsmanAction ruft die SetJobState-Methode auf und legt den Status auf abgeschlossen fest.
Weitere Informationen zu Auftragszuständen finden Sie in der BG_JOB_STATE-Enumeration .
Zugehörige Themen