Uso dei cmdlet di Windows PowerShell winRM per gestire i processi di trasferimento BITS
I cmdlet di PowerShell di Gestione remota Windows possono gestire i processi di trasferimento bitS (Background Intelligent Transfer Service). Per altre informazioni sulla gestione remota BITS, vedere Classi del provider BITS e del provider BITS.
Gli esempi seguenti richiedono il provider BITS. Il provider BITS è disponibile dopo l'installazione del server BITS Compact. Per informazioni sull'installazione del server Compact, vedere la documentazione del server BITS Compact.
Creare un processo di trasferimento 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
Il cmdlet Get-Credential richiede le credenziali dell'utente per connettersi al computer remoto e assegna le credenziali all'oggetto $cred.
Il cmdlet Invoke-WsmanAction crea il processo di trasferimento BITS in Client1 creando un'istanza della classe BitsClientJob e usando le informazioni nella tabella hash definita nel parametro Valueset . Il parametro Valueset specifica le informazioni necessarie per popolare i parametri del metodo CreateJob . Nell'esempio precedente, l'utente imposta il parametro Type su 0 (download). L'utente specifica anche il nome dei file remoti e locali per il processo di download. Per altre informazioni sulla creazione di processi di trasferimento BITS e per informazioni dettagliate sui parametri, vedere Metodo CreateJob .
Il cmdlet Invoke-WsmanAction assegna il risultato alla variabile $result.
Nota
Il carattere accentato grave (') viene utilizzato per indicare un'interruzione di riga.
Impostare priorità del processo di trasferimento BITS.
Set-WsmanInstance -ResourceURI wmi/root/microsoft/bits/BitsClientJob -SelectorSet @{JobId=$result.JobId} ` -ValueSet @{Priority=0} –ComputerName Client1 -Credential $cred
Il cmdlet Set-WsmanInstance modifica la priorità del nuovo processo di trasferimento BITS su 0 (BG_JOB_PRIORITY_FOREGROUND). Per altre informazioni sui livelli di priorità, vedere l'enumerazione BG_JOB_PRIORITY .
Riprendere il processo di trasferimento BITS.
Invoke-WsmanAction -Action SetJobState -ResourceUri wmi/root/microsoft/bits/BitsClientJob -selectorset @{JobId=$result.JobId} ` -valueset @{JobState= 2} –ComputerName Client1 -Credential $cred
Il cmdlet Invoke-WsmanAction chiama il metodo SetJobState , che imposta lo stato del processo su 2 (Resume the Job).
Gestire il processo di trasferimento 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 }
L'esempio precedente è uno script per eseguire il polling dello stato del processo ed eseguire un'azione in base allo stato. Sono possibili le azioni seguenti:
- Se $result. Lo stato è 4 (BG_JOB_STATE_ERROR), il cmdlet Invoke-WsmanAction chiama il metodo SetJobState e annulla il processo.
- Se $result. Lo stato è 5 (BG_JOB_STATE_TRANSIENT_ERROR), il cmdlet Invoke-WsmanAction chiama il metodo SetJobState e annulla il processo.
- Se $result. Lo stato è 6 (BG_JOB_STATE_TRANSFERRED), il cmdlet Invoke-WsmanAction chiama il metodo SetJobState e imposta lo stato da completare.
Per altre informazioni sugli stati del processo, vedere l'enumerazione BG_JOB_STATE .
Argomenti correlati