Isolare una richiesta proxy di PowerShell 5.1 con Start-Job
Usare un normale processo in background per isolare una richiesta web di Windows PowerShell 5.1 dalle modifiche di rete precedenti nel processo.
In una sessione di Windows PowerShell 5.1, un componente precedente può modificare lo stato di rete .NET locale al processo. Un normale processo in background Start-Job fornisce un processo PowerShell separato per un'operazione web successiva.
$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 sono valori forniti dall'applicazione. Per un test HTTP pubblico, il elenco di proxy HTTP fornisce indirizzi intermedi candidati; mantenere stabile l'endpoint scelto quando si confrontano i processi. Fornire anche le credenziali proxy necessarie tramite gli input del processo e i parametri della richiesta previsti. Un oggetto di sessione web attivo del processo padre non viene riutilizzato automaticamente.
Il processo ha un proprio stato di sessione; caricare lì le funzioni o i moduli necessari. Il suo output attraversa un confine di processo, quindi restituire deliberatamente il contenuto è più semplice che presumere che una risposta deserializzata si comporti come l'oggetto attivo originale.
Start-ThreadJob usa un altro modello di esecuzione e non offre lo stesso isolamento di processo. Un processo separato inoltre non ripara un endpoint proxy non valido né un criterio a livello di rete. Usare questo confine quando lo stato di processo condiviso è la differenza rilevante.