我正在尝试制作一个陷阱命令来捕获找不到文件的异常。这是代码:
Trap {
Clear-Host
Write-Host "The file you are looking for does not exist"
}
Get-ItemProperty C:\fake
我是否误解了如何做到这一点?
我正在尝试制作一个陷阱命令来捕获找不到文件的异常。这是代码:
Trap {
Clear-Host
Write-Host "The file you are looking for does not exist"
}
Get-ItemProperty C:\fake
我是否误解了如何做到这一点?
陷阱仅在终止错误(停止管道的错误)时执行,因此首先您需要更改有问题的 cmdlet 的 ErrorAction 行为:
Trap {
Clear-Host
Write-Host "The file you are looking for does not exist"
}
Get-ItemProperty C:\fake -ErrorAction Stop
要抑制错误记录随后冒泡到调用者,请从陷阱内部从当前范围返回:
Trap {
Clear-Host
Write-Host "The file you are looking for does not exist"
return
}
Get-ItemProperty C:\fake -ErrorAction Stop
为了不必一直-ErrorAction Stop
明确指定参数参数,$ErrorActionPreference
请在脚本/函数的开头设置变量:
$ErrorActionPreference = 'Stop'
或使用$PSDefaultParameterValues
哈希表为特定的 cmdlet 设置它:
$PSDefaultParameterValues['Get-ItemProperty:ErrorAction'] = 'Stop'
$PSDefaultParameterValues['Do-OtherStuff:ErrorAction'] = 'Stop'
$PSDefaultParameterValues['Set-*:ErrorAction'] = 'Stop'