You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

设置ErrorActionPreference为Stop后,Get-Volume未抛出异常的原因

PowerShell脚本未触发预期异常的原因分析

你的脚本中设置了$ErrorActionPreference = "Stop",但执行Get-Volume -FileSystemLabel "doesnotexist"时并未进入指定的catch块,反而输出红色错误信息,核心原因是你捕获的异常类型与实际抛出的不匹配。

具体细节:

  • 当Get-Volume找不到指定卷标时,实际抛出的异常类型是 Microsoft.Management.Infrastructure.CimException
  • 你在catch中指定的Microsoft.PowerShell.Cmdletization.Cim.CimJobException是异步CIM作业执行失败时才会触发的异常类型,而Get-Volume默认是同步执行,不会抛出该类型异常

验证与解决方法:

可以临时修改catch块不指定类型,打印实际异常的完整类型:

catch {
  Write-Host "实际异常类型: $($_.Exception.GetType().FullName)"
}

确认类型后,将catch的目标类型修改为真实的异常类型即可,比如:

catch [Microsoft.Management.Infrastructure.CimException]
{
  Write-Host "exception thrown"
}

内容的提问来源于stack exchange,提问作者javanerd

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 01:02:02