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은 다른 실행 모델을 사용하며 동일한 프로세스 격리를 제공하지 않습니다. 별도 프로세스도 잘못된 프록시 엔드포인트나 네트워크 전체 정책을 고치지 않습니다. 공유 프로세스 상태가 핵심 차이일 때 이 경계를 사용하세요.

관련 글