一方面,Invoke-WebRequest
引发的错误永远不会被捕获在您的代码中。另外,代码段的最后一行将替换catch
块可能已分配给$StatusCode
的所有内容。将两个语句都移到try
块中。我还要添加另一个catch
来处理可能发生的其他异常。
更改此:
if ($response = (Invoke-WebRequest @Params -ErrorAction Stop)) {
try {
$Token = (($response.Content) | ConvertFrom-Json).Token
} catch [System.Net.WebException] {
$StatusCode = "Status Code: $($_.Exception.Response.StatusCode.Value__) ";
$Message = " Message: $($_.Exception.Message)"
}
}
$StatusCode = "Status Code: $([int]$response.BaseResponse.statusCode)"
对此:
try {
$response = (Invoke-WebRequest @Params -ErrorAction Stop)
$Token = (($response.Content) | ConvertFrom-Json).Token
$StatusCode = "Status Code: $([int]$response.BaseResponse.statusCode)"
} catch [System.Net.WebException] {
$StatusCode = "Status Code: $($_.Exception.Response.StatusCode.Value__) "
$Message = " Message: $($_.Exception.Message)"
} catch {
$StatusCode = 0
$Message = " Message: $($_.Exception.Message)"
# alternatively re-throw the exception by uncommenting below line
#throw
}
如果您只想要状态码200和401,而又不想要其他任何状态码,则可以执行以下操作:
try {
$response = (Invoke-WebRequest @Params -ErrorAction Stop)
$Token = (($response.Content) | ConvertFrom-Json).Token
$StatusCode = "Status Code: $([int]$response.BaseResponse.statusCode)"
} catch [System.Net.WebException] {
if ($_.Exception.Response.StatusCode.Value__ -eq 401) {
$StatusCode = "Status Code: $($_.Exception.Response.StatusCode.Value__) "
$Message = " Message: $($_.Exception.Message)"
} else {
throw
}
} catch {
throw
}
本文链接:https://www.f2er.com/3148152.html