powershell - 输出结果 Print Success and Failed without Exception error
问题描述
我正在尝试在成功和失败的情况下打印状态代码 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。
解决方案
一方面,抛出的错误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
}
推荐阅读
- reactjs - 如何简洁地实现reducer函数的类型推断?
- css - 在 Tailwind 中设置动画的背景重复图像
- jquery - 我正在尝试使用 laravel 在 yajra 数据表上向用户显示角色
- typescript - 使用联合但收到道具不存在的错误
- macos - InDesign jsx 使用特定选项打开文件
- python - 有什么方法可以加入多个矢量(jpg格式)图像而没有任何重叠?
- css - 子元素的 Z-Index 问题
- macos - MacCatalyst VPN 连接 每次连接都询问密码
- javascript - 显示不同数据的上一个和下一个按钮
- python - 如果不需要项目,如何在 Scrapy 中发布新项目?