Ізоляція проксі-запиту PowerShell 5.1 за допомогою Start-Job
Використовуйте звичайне фонове завдання, щоб ізолювати веб-запит Windows PowerShell 5.1 від попередніх мережевих змін у процесі.
У сеансі Windows PowerShell 5.1 попередній компонент може змінити локальний мережевий стан .NET процесу. Звичайне фонове завдання Start-Job надає окремий процес PowerShell для подальшої веб-операції.
$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 і proxyUri — це значення, які надає застосунок. Для публічного HTTP-тесту список HTTP-проксі пропонує можливі проміжні адреси; під час порівняння процесів тримайте вибрану кінцеву точку незмінною. Передавайте також потрібні облікові дані проксі через передбачені вхідні дані завдання та параметри запиту. Живий об'єкт веб-сеансу батьківського процесу не використовується повторно автоматично.
Завдання має власний стан сеансу; завантажуйте потрібні функції або модулі там. Його вивід перетинає межу процесу, тому навмисно повертати вміст простіше, ніж припускати, що десеріалізована відповідь поводиться як початковий живий об'єкт.
Start-ThreadJob використовує іншу модель виконання і не забезпечує такої самої ізоляції процесів. Окремий процес також не виправляє недійсну кінцеву точку проксі чи мережеву політику. Використовуйте цю межу, коли спільний стан процесу є суттєвою відмінністю.