Поделиться через


Использование командлетов WinRM Windows PowerShell для управления заданиями передачи BITS

Командлеты Windows для удаленного управления PowerShell могут управлять заданиями передачи Службы интеллектуальной передачи данных в фоновом режиме (BITS). Дополнительные сведения об удаленном управлении BITS см. в поставщике BITS и классах поставщиков BITS .

В следующих примерах требуется поставщик BITS. Поставщик BITS доступен после установки сервера BITS Compact. Сведения об установке сервера Compact см. в документации BITS Compact Server.

  1. Создайте задание передачи 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
    

    Командлет Get-Credential запрашивает учетные данные пользователя для подключения к удаленному компьютеру и назначает учетные данные объекту $cred.

    Командлет Invoke-WsmanAction создает задание передачи BITS на Client1 путем создания экземпляра класса BitsClientJob и использования сведений в хэш-таблице, определенной в параметре Valueset. Параметр Valueset указывает сведения, необходимые для заполнения параметров метода CreateJob. В предыдущем примере пользователь задает параметр Type значение 0 (скачать). Пользователь также задает имя удаленных и локальных файлов для задания загрузки. Дополнительную информацию о создании заданий передачи BITS и о параметрах подробнее см. в методе CreateJob.

    Командлет Invoke-WsmanAction назначает значение результата переменной $result.

    Заметка

    Символ серьезного акцента (') используется для указания разрыва строки.

     

  2. Задайте приоритет задания передачи BITS.

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

    Командлет Set-WsmanInstance изменяет приоритет нового задания передачи BITS на 0 (BG_JOB_PRIORITY_FOREGROUND). Дополнительные сведения о уровнях приоритета см. в перечислении BG_JOB_PRIORITY.

  3. Возобновление задания передачи BITS.

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

    Командлет Invoke-WsmanAction вызывает метод SetJobState, который задает состояние задания равным 2 (возобновление задания).

  4. Управляйте заданием передачи 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
    }
    

    Предыдущий пример — это скрипт для проверки состояния задачи и выполнения действий в зависимости от результата. Возможны следующие действия:

    • Если $result.Состояние равно 4 (BG_JOB_STATE_ERROR), командлет Invoke-WsmanAction вызывает метод SetJobState и отменяет задание.
    • Если $result.State равно 5 (BG_JOB_STATE_TRANSIENT_ERROR), командлет Invoke-WsmanAction вызывает метод SetJobState и отменяет задание.
    • Если $result. Состояние равно 6 (BG_JOB_STATE_TRANSFERRED), командлет Invoke-WsmanAction вызывает метод SetJobState и устанавливает состояние как завершённое.

    Дополнительные сведения о состояниях задания см. в перечислении BG_JOB_STATE.

получения учетных данных

Invoke-WsmanAction

Set-WsmanInstance