优雅处理Powershell中的点源故障

时间:2016-08-31 12:56:12

标签: powershell

所以我有一个使用点源的脚本

$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 }
    }

1 个答案:

答案 0 :(得分:4)

我打赌你错误地使用了try-catch。看看下面的代码片段(为简单起见而展开):

$Dependencies = "Script1","Script2","Script3"
$Dependencies | % {
    try {
        $psFile = ".\$($_).ps1"
        . $psFile
    } catch {
        Write-Host "Failed to execute $psFile"
    }
}