In einer Windows PowerShell 5.1-Sitzung kann eine frühere Komponente den prozesslokalen .NET-Netzwerkzustand ändern. Ein gewöhnlicher Start-Job-Hintergrundjob stellt für einen späteren Webvorgang einen separaten PowerShell-Prozess bereit.

$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 und proxyUri sind von der Anwendung bereitgestellte Werte. Für einen öffentlichen HTTP-Test liefert die HTTP-Proxy-Liste mögliche Zwischenadressen; halten Sie den gewählten Endpunkt beim Vergleichen von Prozessen konstant. Übergeben Sie auch alle benötigten Proxy-Anmeldedaten über die vorgesehenen Jobeingaben und Anforderungsparameter. Ein lebendes Websitzungsobjekt des übergeordneten Prozesses wird nicht automatisch wiederverwendet.

Der Job hat seinen eigenen Sitzungszustand; laden Sie benötigte Funktionen oder Module dort. Seine Ausgabe überschreitet eine Prozessgrenze, daher ist die bewusste Rückgabe des Inhalts einfacher, als anzunehmen, dass sich eine deserialisierte Antwort wie das ursprüngliche lebende Objekt verhält.

Start-ThreadJob verwendet ein anderes Ausführungsmodell und bietet nicht dieselbe Prozessisolierung. Ein separater Prozess behebt auch keinen ungültigen Proxyendpunkt und keine netzwerkweite Richtlinie. Verwenden Sie diese Grenze, wenn gemeinsam genutzter Prozesszustand der relevante Unterschied ist.

Ähnliche Artikel