所以我有一个使用点源的脚本
$Dependencies = "Script1","Script2","Script3"
$Dependencies | % { . ".\$( $_ ).ps1" }
我尝试使用Try { } Catch { }
来捕获错误,但是将脚本导入try和catch的范围。
检测点源导入失败的最简洁方法是什么?
通常我可以将ErrorAction
设置为Stop
,这会强制函数抛出错误,但我似乎无法通过点源执行此操作。
更新
最后,结果发现try和catch确实有效。这是我修改过的脚本
$Dependencies = "Script1","Script2","Script3"
$Dependencies |
ForEach-Object {
Try { . ".\$( $_ ).ps1" }
Catch { Throw }
}
答案 0 :(得分:4)
我打赌你错误地使用了try-catch。看看下面的代码片段(为简单起见而展开):
$Dependencies = "Script1","Script2","Script3"
$Dependencies | % {
try {
$psFile = ".\$($_).ps1"
. $psFile
} catch {
Write-Host "Failed to execute $psFile"
}
}