Udostępnij przez


Zarządzanie zadaniami transferu usługi BITS za pomocą poleceń cmdlet programu Windows PowerShell usługi WinRM

Polecenia cmdlet programu PowerShell dla zdalnego zarządzania systemem Windows mogą zarządzać zadaniami transferu usługi inteligentnego transferu w tle (BITS). Aby uzyskać więcej informacji na temat zdalnego zarządzania usługą BITS, zobacz dostawcę BITS i klasy dostawcy BITS .

Poniższe przykłady wymagają dostawcy usługi BITS. Dostawca usługi BITS jest dostępny po zainstalowaniu serwera BITS Compact. Aby uzyskać informacje na temat instalowania serwera Compact, zobacz dokumentację BITS Compact Server.

  1. Utwórz zadanie transferu 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
    

    Polecenie cmdlet Get-Credential żąda poświadczeń użytkownika w celu nawiązania połączenia z komputerem zdalnym i przypisuje poświadczenia do obiektu $cred.

    Polecenie cmdlet Invoke-WsmanAction tworzy zadanie transferu BITS na komputerze Client1 poprzez utworzenie instancji klasy BitsClientJob oraz korzystając z informacji zdefiniowanych w tabeli skrótów w parametrze Valueset. Parametr Valueset określa informacje potrzebne do wypełnienia parametrów metody CreateJob. W poprzednim przykładzie użytkownik ustawia parametr Type na 0 (pobierz). Użytkownik określa również nazwę plików zdalnych i lokalnych dla zadania pobierania. Aby uzyskać więcej informacji na temat tworzenia zadań transferowych BITS oraz szczegółowe informacje dotyczące parametrów, odwołaj się do metody CreateJob.

    Polecenie cmdlet Invoke-WsmanAction przypisuje wynik do zmiennej $result.

    Notatka

    Znak akcentu grobowego (') służy do wskazywania podziału wiersza.

     

  2. Ustaw priorytet zadania transferu usługi BITS.

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

    Polecenie cmdlet Set-WsmanInstance zmienia priorytet nowego zadania transferu BITS na 0 (BG_JOB_PRIORITY_FOREGROUND). Aby uzyskać więcej informacji na temat poziomów priorytetów, zobacz wyliczenie BG_JOB_PRIORITY.

  3. Wznów zadanie transferu usługi BITS.

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

    Polecenie cmdlet Invoke-WsmanAction wywołuje metodę SetJobState, która ustawia stan zadania na 2 (Wznów zadanie).

  4. Zarządzanie zadaniem transferu usługi 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
    }
    

    Powyższy przykład to skrypt do sondowania stanu zadania i wykonywania akcji na podstawie stanu. Możliwe są następujące akcje:

    Aby uzyskać więcej informacji na temat stanów zadań, zobacz wyliczenie BG_JOB_STATE.

get-credential

Invoke-WsmanAction

Set-WsmanInstance