powershell - 如何读取抛出的错误内容并在 IF 语句中使用它
问题描述
我想用try{}/Catch{} “抓取”异常的内容,并使用 IF 搜索其中的内容。有人可以告诉我如何使用$PSItem.Exception吗?谢谢 !
try {
get-process ...
}
catch {
if (PSItem.Exception ....) {
Write-Error -Message "just move on !" -ErrorAction continue
}
else {
throw PSItem.Exception
}
}
解决方案
从 try/catch 块抛出的项目(对于powershell中的任何异常都是如此)是一种ErrorRecord
类型(您可以在 msdn 上查看其成员)。在此记录中,实际异常在$PSItem.Exception
(或$_
代替$PSItem
)下;Message
此成员在成员 on下还有一串异常消息Exception
。如果您使用该ErrorRecord#ToString
方法,您可以直接获得此信息,而无需通过成员进行挖掘:
"$PSItem"
然后,您可以检查任何您喜欢的错误消息:
if ("$PSItem" -like '*Access denied*') {
作为旁注,不要重新抛出异常,只需像这样抛出原始错误记录:
else {
throw
}
推荐阅读
- javascript - 一些 CSS 文件需要“text/css”,而一些需要“stylesheet/css”类型
- python - 如何使用 BeautifulSoup 从特定跨度中提取文本?
- linux - 如何在 Docker 容器中挂载 /proc
- javascript - lua http.get body 获取 php 文件,返回站点代码而不是正文
- linq - 你如何在 Linq 中写一个带有“OR”的 INNER JOIN
- flutter - 坏状态:没有元素让电话号码列出
- javascript - 回调不是异步库中的函数
- visual-studio - 如何定位具有相同距离的对象
- ios - TableView Cell Swift 中的 CollectionView 混合卡片类型重用问题
- angularjs - 在 AngularJS 中找不到使用 CSS 选择器或 xPath 的元素