Em uma sessão do Windows PowerShell 5.1, um componente anterior pode alterar o estado de rede .NET local ao processo. Um trabalho em segundo plano Start-Job comum fornece um processo do PowerShell separado para uma operação web posterior.

$job = Start-Job -ArgumentList $uri, $proxyUri -ScriptBlock {
    param($destination, $intermediary)
    $response = Invoke-WebRequest -Uri $destination `
        -Proxy $intermediary -UseBasicParsing -TimeoutSec 30
    $response.Content
}
try {
    Receive-Job -Job $job -Wait -ErrorAction Stop
}
finally {
    Remove-Job -Job $job
}

uri e proxyUri são valores fornecidos pelo aplicativo. Para um teste HTTP público, a lista de proxies HTTP oferece endereços intermediários candidatos; mantenha o endpoint escolhido estável ao comparar processos. Forneça também as credenciais de proxy necessárias pelas entradas do trabalho e pelos parâmetros da solicitação. Um objeto de sessão web ativo do processo pai não é reutilizado automaticamente.

O trabalho tem seu próprio estado de sessão; carregue ali as funções ou módulos necessários. Sua saída cruza um limite de processo, então devolver o conteúdo deliberadamente é mais simples do que supor que uma resposta desserializada se comporte como o objeto ativo original.

Start-ThreadJob usa outro modelo de execução e não oferece o mesmo isolamento de processo. Um processo separado também não corrige um endpoint de proxy inválido nem uma política de rede. Use esse limite quando o estado de processo compartilhado for a diferença relevante.

Artigos relacionados