Изоляция прокси-запроса 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 использует другую модель выполнения и не обеспечивает такую же изоляцию процесса. Отдельный процесс также не исправляет недопустимую конечную точку прокси или сетевую политику. Используйте эту границу, когда общее состояние процесса является существенным различием.