2016-08-31 2 views
0

だから私は、の範囲にドットソーシング私は、エラーをキャッチTry { } Catch { }を使用しようとしましたPowerShellのドット・ソースの障害を扱うエレガント

$Dependencies = "Script1","Script2","Script3" 
$Dependencies | % { . ".\$($_).ps1" } 

を使用しているスクリプトが、そのインポートされたスクリプトを持っています試してキャッチする。

dot-sourceインポートの失敗を検出する最もクリーンな方法は何ですか?

通常、私はErrorActionStopに設定することができますが、これは関数がエラーをスローするよう強制しますが、ドットソーシングではできないようです。最後に

UPDATE

それは試してみるとキャッチが仕事をしたことが判明しました。ここに私の修正されたスクリプトがあります

$Dependencies = "Script1","Script2","Script3" 
$Dependencies | 
    ForEach-Object { 
     Try { . ".\$($_).ps1" } 
     Catch { Throw } 
    } 

答えて

3

私はあなたがtry-catchを間違って使ったと考えます。次のスニペットをご覧ください(簡略化のために拡張されています):

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

あなたは本当に正しいです。どのように私はそれを行うことができたか分かりません。 – Bruno