Share via


Usar os cmdlets do Windows PowerShell do WinRM para gerenciar trabalhos de transferência do BITS

Os cmdlets do PowerShell de Gerenciamento Remoto do Windows podem gerenciar trabalhos de transferência do Serviço de Transferência Inteligente em Segundo Plano (BITS). Para obter mais informações sobre o gerenciamento remoto do BITS, consulte Provedor BITS e classes de provedor BITS.

Os exemplos a seguir exigem o provedor BITS. O provedor BITS fica disponível após a instalação do servidor BITS Compact. Para obter informações sobre como instalar o servidor Compact, consulte a documentação do BITS Compact Server .

  1. Crie um trabalho de transferência do 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
    

    O cmdlet Get-Credential solicita que as credenciais do usuário se conectem ao computador remoto e atribui as credenciais ao objeto $cred.

    O cmdlet Invoke-WsmanAction cria o trabalho de transferência do BITS em Client1 criando uma instância da classe BitsClientJob e usando as informações na tabela de hash definida no parâmetro Valueset . O parâmetro Valueset especifica as informações necessárias para preencher os parâmetros do método CreateJob . No exemplo anterior, o usuário define o parâmetro Type como 0 (download). O usuário também especifica o nome dos arquivos remotos e locais para o trabalho de download. Para obter mais informações sobre como criar trabalhos de transferência do BITS e obter informações detalhadas sobre parâmetros, consulte Método CreateJob .

    O cmdlet Invoke-WsmanAction atribui o resultado à variável $result.

    Observação

    O caractere de acento grave (') é usado para indicar uma quebra de linha.

     

  2. Defina a Prioridade do trabalho de transferência do BITS.

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

    O cmdlet Set-WsmanInstance altera a nova prioridade do trabalho de transferência do BITS para 0 (BG_JOB_PRIORITY_FOREGROUND). Para obter mais informações sobre os níveis de prioridade, consulte a enumeração BG_JOB_PRIORITY.

  3. Retome o trabalho de transferência do BITS.

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

    O cmdlet Invoke-WsmanAction chama o método SetJobState, que define o estado do trabalho como 2 (Retomar o trabalho).

  4. Gerenciar o trabalho de transferência do 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
    }
    

    O exemplo anterior é um script para sondar o status do trabalho e executar uma ação com base no status. As seguintes ações são possíveis:

    Para obter mais informações sobre estados de trabalho, consulte a enumeração BG_JOB_STATE.

Get-Credential

Invoke-WsmanAction

Set-WsmanInstance