捕获计算属性中的非终止错误

时间:2016-12-15 00:19:10

标签: powershell error-handling try-catch powershell-v2.0 powershell-v3.0

我通常在PowerShell脚本中设置ErrorActionPreference = "Stop"并使用Trap和/或Try...Catch来检测非终止错误,但由于某种原因,此错误似乎无法捕获

下面脚本中的[datetime]'13/12/2016'表达式会导致“无效参数运行时异常”,但try...catch不会被触发,尽管$ErrorActionPreference = "Stop"

$Error.Clear()
$ErrorActionPreference = "Stop"
$a = @( "name", @{name='test';expression={([datetime]'13/12/2016')}} )
try {
    Get-ChildItem -Path c:\ | Select-Object -Property $a
} catch {
    Write-Host "Caught error: $($_)"
}
write-host "There were $($Error.Count) error(s)"
write-host "Most recent error: $($Error[0] | out-string)"

要说清楚,我对修复日期时间转换不感兴趣,我知道如何做到这一点,但我想了解为什么我无法发现错误。

我在PowerShell 2.0和3.0环境中试过这个。

更新:如果我在[datetime]'13/12/2016'块中添加了一行Try,则此操作会触发Catch

更新:将-ErrorAction Stop添加到Get-ChildItem和/或Select-Object cmdlet没有任何区别。

0 个答案:

没有答案