Использование командлетов Windows PowerShell в WinRM для управления заданиями передачи BITS
Командлеты PowerShell удаленного управления Windows могут управлять заданиями передачи фоновой интеллектуальной службы передачи (BITS). Дополнительные сведения о удаленном управлении BITS см. в разделе "Поставщик BITS" и классы поставщиков BITS.
В следующих примерах требуется поставщик BITS. Поставщик BITS доступен после установки сервера BITS Compact. Сведения об установке сервера Compact см. в документации по BITS Compact Server .
Создайте задание передачи 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 и подробных сведений о параметрах см. в разделе "Создание задания".
Командлет Invoke-WsmanAction назначает результат переменной $result.
Примечание.
Символ серьезного акцента (') используется для указания разрыва строки.
Задайте приоритет задания передачи 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.
Возобновление задания передачи 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 (возобновление задания).
Управление заданием передачи 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. Состояние равно 5 (BG_JOB_STATE_TRANSIENT_ERROR), командлет Invoke-WsmanAction вызывает метод SetJobState и отменяет задание.
- Если $result. Состояние равно 6 (BG_JOB_STATE_TRANSFERRED), командлет Invoke-WsmanAction вызывает метод SetJobState и задает состояние для завершения.
Дополнительные сведения о состояниях заданий см. в перечислении BG_JOB_STATE.
См. также