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

Похожие статьи