powershell - Powershell:无法隐藏“删除项目”上的“访问被拒绝”错误
问题描述
我想保持Remove-Item
安静的指令,例外与否。我在脚本中运行以下命令来删除证书:
Remove-Item $store\$thumbprint
如果我以本地管理员身份运行脚本,很好......它保持安静并且文件被删除。但是,如果我以非特权用户身份运行它,我会按预期收到“拒绝访问”错误,但无论如何我都希望保持安静。
我尝试了以下方法:
$output = (Remove-Item $store\$thumbprint)
# or...
try{Remove-Item $store\$thumbprint} catch{}
# or...
Remove-Item $store\$thumbprint -ErrorAction SilentlyContinue
但我总是在控制台上显示错误/异常。
解决方案
默认情况下,会生成一个非终止错误Remove-Item
,并将错误添加到$Error
变量中而不会引发异常。要查看出现非终止错误时 Windows PowerShell 将执行的操作,请查看$ErrorActionPreference
变量的值(其默认值为Continue
)。
这Access to the path '…' is denied
是此类非终止错误的示例,因此您可以使用ErrorAction
参数来覆盖当前命令$ErrorActionPreference
的变量值:
Remove-Item $store\$thumbprint -ErrorAction SilentlyContinue
另一方面,$ErrorActionPreference
该ErrorAction
参数不会影响 PowerShell 如何响应停止 cmdlet 处理的终止错误。因此,如果我们不确定错误是否终止,那么可以安全地处理Try-Catch-Finally
块使用的任何错误-ErrorAction Stop
,如下所示:
try {
Remove-Item $store\$thumbprint -ErrorAction Stop
} catch {
### A Catch block can include commands for tracking the error
### or for recovering the expected flow of the script
}
推荐阅读
- c - 无法使用 mbedtls 示例客户端连接到 https 服务器
- makefile - Makefile通配符问题
- python - 试图将类(在列表中)保存到文件中
- php - Laravel 文件存储返回 tmp 文件名
- javascript - Javascript img onclick 总是点击所有的imgs,无法捕捉到点击的正确img
- python - 评估使用 Keras 创建的已保存 TensorFlow 图的结果不一致
- javascript - 如何从具有数组值的表单中获取值 ajax
- azure-devops - 在 VSTS 发布管道期间替换存储在不同工件中的多个 appsettings 文件中的值
- javascript - 如何动态地将数组值作为对象道具传递?
- android - 如何在区域设置更改期间在 Android Oreo 中进行后台 API 调用?