Een PowerShell 5.1-proxyverzoek isoleren met Start-Job
Gebruik een gewone achtergrondtaak om een webverzoek in Windows PowerShell 5.1 te isoleren van eerdere netwerkwijzigingen in het proces.
In een Windows PowerShell 5.1-sessie kan een eerder onderdeel de proceslokale .NET-netwerkstatus wijzigen. Een gewone Start-Job-achtergrondtaak biedt een afzonderlijk PowerShell-proces voor een latere weboperatie.
$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 en proxyUri zijn waarden die de toepassing levert. Voor een openbare HTTP-test levert de lijst met HTTP-proxyservers kandidaat-tussenadressen; houd het gekozen eindpunt stabiel bij het vergelijken van processen. Geef ook benodigde proxyreferenties door via de bedoelde taakinvoer en verzoekparameters. Een levend websessieobject van de ouder wordt niet automatisch hergebruikt.
De taak heeft zijn eigen sessiestatus; laad daar de benodigde functies of modules. De uitvoer overschrijdt een procesgrens, dus bewust de inhoud teruggeven is eenvoudiger dan aannemen dat een gedeserialiseerd antwoord zich gedraagt als het oorspronkelijke levende object.
Start-ThreadJob gebruikt een ander uitvoeringsmodel en biedt niet dezelfde procesisolatie. Een afzonderlijk proces herstelt ook geen ongeldig proxy-eindpunt of netwerkbreed beleid. Gebruik deze grens wanneer gedeelde procestoestand het relevante verschil is.