Isoler une requête proxy PowerShell 5.1 avec Start-Job
Utilisez une tâche en arrière-plan ordinaire pour isoler une requête web Windows PowerShell 5.1 des changements réseau antérieurs dans le processus.
Dans une session Windows PowerShell 5.1, un composant antérieur peut modifier l'état réseau .NET local au processus. Une tâche en arrière-plan Start-Job ordinaire fournit un processus PowerShell distinct pour une opération web ultérieure.
$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 et proxyUri sont des valeurs fournies par l'application. Pour un test HTTP public, la liste de proxys HTTP fournit des adresses intermédiaires candidates ; gardez le point de terminaison choisi stable lors de la comparaison des processus. Fournissez aussi les identifiants proxy nécessaires via les entrées de tâche et les paramètres de requête prévus. Un objet de session web actif du parent n'est pas réutilisé automatiquement.
La tâche possède son propre état de session ; chargez-y les fonctions ou modules requis. Sa sortie traverse une frontière de processus, il est donc plus simple de renvoyer délibérément le contenu que de supposer qu'une réponse désérialisée se comporte comme l'objet actif d'origine.
Start-ThreadJob utilise un autre modèle d'exécution et n'offre pas la même isolation de processus. Un processus distinct ne répare pas non plus un point de terminaison proxy invalide ni une stratégie réseau. Utilisez cette frontière lorsque l'état de processus partagé est la différence pertinente.