Izolowanie żądania proxy programu PowerShell 5.1 za pomocą Start-Job
Użyj zwykłego zadania w tle, aby odizolować żądanie sieciowe programu Windows PowerShell 5.1 od wcześniejszych zmian sieciowych w procesie.
W sesji Windows PowerShell 5.1 wcześniejszy składnik może zmienić lokalny stan sieci .NET procesu. Zwykłe zadanie w tle Start-Job zapewnia osobny proces programu PowerShell dla późniejszej operacji sieciowej.
$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 i proxyUri to wartości dostarczane przez aplikację. Do publicznego testu HTTP lista proxy HTTP udostępnia kandydujące adresy pośredniczące; podczas porównywania procesów utrzymuj wybrany punkt końcowy bez zmian. Przekazuj też wymagane poświadczenia proxy przez zamierzone dane wejściowe zadania i parametry żądania. Aktywny obiekt sesji sieciowej procesu nadrzędnego nie jest automatycznie używany ponownie.
Zadanie ma własny stan sesji; ładuj tam potrzebne funkcje lub moduły. Jego dane wyjściowe przekraczają granicę procesu, więc celowe zwrócenie zawartości jest prostsze niż zakładanie, że zdeserializowana odpowiedź zachowuje się jak pierwotny aktywny obiekt.
Start-ThreadJob używa innego modelu wykonywania i nie zapewnia tej samej izolacji procesu. Osobny proces nie naprawia też nieprawidłowego punktu końcowego proxy ani polityki sieciowej. Używaj tej granicy, gdy wspólny stan procesu jest istotną różnicą.