Isolar uma solicitação de proxy do PowerShell 5.1 com Start-Job
Use um trabalho em segundo plano comum para isolar uma solicitação web do Windows PowerShell 5.1 de alterações de rede anteriores no processo.
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.