Utilisation des applets de commande Windows PowerShell WinRM pour gérer les tâches de transfert BITS

Windows Les applets de commande PowerShell de gestion à distance peuvent gérer des tâches de transfert Service de transfert intelligent en arrière-plan (BITS). Pour plus d’informations sur la gestion à distance BITS, consultez la rubrique classes du fournisseur bits et du fournisseur bits.

Les exemples suivants requièrent le fournisseur bits. Le fournisseur BITS est disponible après l’installation de BITS Compact Server. Pour plus d’informations sur l’installation de Compact Server, consultez la documentation de bits Compact Server .

  1. Créez une tâche de transfert 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
    

    L’applet de commande obtient-Credential demande les informations d’identification de l’utilisateur pour se connecter à l’ordinateur distant et assigne les informations d’identification à l’objet $CRED.

    L’applet de commande Invoke-WsmanAction crée la tâche de transfert bits sur Client1 en créant une instance de la classe BitsClientJob et en utilisant les informations de la table de hachage définie dans le paramètre ValueSet . Le paramètre ValueSet spécifie les informations nécessaires pour remplir les paramètres de la méthode createJob . Dans l’exemple précédent, l’utilisateur définit le paramètre de type sur 0 (Télécharger). L’utilisateur spécifie également le nom des fichiers locaux et distants pour le travail de téléchargement. Pour plus d’informations sur la création de tâches de transfert BITS et pour obtenir des informations détaillées sur les paramètres, consultez méthode createJob .

    L’applet de commande Invoke-WsmanAction assigne le résultat à la variable $result.

    Notes

    Le caractère d’accent grave ( ` ) est utilisé pour indiquer un saut de ligne.

  2. Définissez la priorité de la tâche de transfert BITS.

    Set-WsmanInstance  -ResourceURI  wmi/root/microsoft/bits/BitsClientJob -SelectorSet @{JobId=$result.JobId} `
    -ValueSet @{Priority=0} –ComputerName Client1  -Credential $cred
    

    L’applet de commande Set-WsmanInstance modifie la priorité de la nouvelle tâche de transfert bits à 0 (priorité du _ travail BG _ _ Foreground). Pour plus d’informations sur les niveaux de priorité, consultez l’énumération de la _ _ priorité du travail BG .

  3. Reprendre la tâche de transfert BITS.

    Invoke-WsmanAction -Action SetJobState -ResourceUri wmi/root/microsoft/bits/BitsClientJob  -selectorset @{JobId=$result.JobId}  `
    -valueset @{JobState= 2} –ComputerName Client1  -Credential $cred
    

    L’applet de commande Invoke-WsmanAction appelle la méthode SetJobState , qui définit l’état du travail sur 2 (reprendre la tâche).

  4. Gérez la tâche de transfert 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’exemple précédent est un script permettant d’interroger l’état du travail et d’effectuer une action en fonction de l’État. Les actions suivantes sont possibles :

    Pour plus d’informations sur les États de travail, consultez l’énumération de l' _ _ État de travail BG .

Get-Credential

Invoke-WsmanAction

Set-WsmanInstance