이 시도:
try { $response = Invoke-WebRequest http://localhost/foo } catch {
$_.Exception.Response.StatusCode.Value__}
이것이 예외를 던지는 것은 다소 안타까운 일이지만 그 방법입니다.
댓글 별 업데이트
이러한 오류가 여전히 유효한 응답을 반환하도록하려면 해당 유형의 예외를 캡처 WebException하고 관련 Response.
예외에 대한 응답은 type System.Net.HttpWebResponse이지만 성공적인 Invoke-WebRequest호출 의 응답 은 type Microsoft.PowerShell.Commands.HtmlWebResponseObject이므로 두 시나리오에서 호환 가능한 유형을 반환하려면 성공적인 응답의을 가져와야 BaseResponse합니다 System.Net.HttpWebResponse.
이 새로운 응답 유형의 상태 코드는 [system.net.httpstatuscode]단순한 정수가 아닌 유형의 열거 형 이므로 명시 적으로 int로 변환하거나 Value__위에서 설명한대로 해당 속성에 액세스 하여 숫자 코드를 가져와야합니다.
$response = try {
(Invoke-WebRequest -Uri 'localhost/foo' -ErrorAction Stop).BaseResponse
} catch [System.Net.WebException] {
Write-Verbose "An exception was caught: $($_.Exception.Message)"
$_.Exception.Response
}
$statusCodeInt = [int]$response.BaseResponse.StatusCode
$statusCodeInt = $response.BaseResponse.StatusCode.Value__