Share via


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

Les applets de commande PowerShell de gestion à distance Windows peuvent gérer les travaux de transfert bits (Background Intelligent Transfer Service). Pour plus d’informations sur la gestion à distance BITS, consultez Fournisseurs BITS et Classes de fournisseur BITS.

Les exemples suivants nécessitent le fournisseur BITS. Le fournisseur BITS est disponible après l’installation du serveur BITS Compact. Pour plus d’informations sur l’installation du serveur Compact, consultez la documentation bits Compact Server .

  1. Créez un travail 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 Get-Credential demande aux informations d’identification de l’utilisateur de se connecter à l’ordinateur distant et affecte les informations d’identification à l’objet $cred.

    L’applet de commande Invoke-WsmanAction crée le travail de transfert BITS sur Client1 en créant un 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 Type sur 0 (téléchargement). L’utilisateur spécifie également le nom des fichiers distants et locaux pour le travail de téléchargement. Pour plus d’informations sur la création de travaux de transfert BITS et pour plus d’informations sur les paramètres, consultez Méthode CreateJob .

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

    Notes

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

     

  2. Définissez la priorité du travail 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é du nouveau travail de transfert BITS sur 0 (BG_JOB_PRIORITY_FOREGROUND). Pour plus d’informations sur les niveaux de priorité, consultez l’énumération BG_JOB_PRIORITY .

  3. Reprendre le travail 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 le travail).

  4. Gérez le travail 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 pour interroger le status du travail et effectuer une action basée sur le status. Les actions suivantes sont possibles :

    Pour plus d’informations sur les états du travail, consultez l’énumération BG_JOB_STATE .

Get-Credential

Invoke-WsmanAction

Set-WsmanInstance