输出结果打印成功并且失败,没有异常错误

我正在尝试在成功和失败的情况下打印状态代码200/401。

我的脚本正在使用状态码200。但是,如果我想使令牌失败,请$StatusCode不能打印401。

在两种情况下,通过一个参数我都需要一些有关打印状态代码的建议。

$StatusCode = "Status Code: $([int]$response.BaseResponse.statusCode)”仅适用于状态码200。

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)"

我的$StatusCode应该适用于200和401。

dongchenxiapril 回答:输出结果打印成功并且失败,没有异常错误

一方面,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

大家都在问