2016-08-31 2 views
0
Handhabung

So habe ich ein Skript, das Dot-SourcingElegante ein Punktquellenfehler in Powershell

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

ich Try { } Catch { } zu verwenden versucht haben, verwendet, die den Fehler gefangen aber, dass importierte das Skript in den Anwendungsbereich der der Versuch und Fang.

Was ist die sauberste Art, einen Fehler beim Import der Punktquelle zu erkennen?

Normalerweise kann ich die ErrorAction auf Stop setzen und das zwingt eine Funktion, einen Fehler zu werfen, aber ich bin nicht in der Lage, das mit Dot-Sourcing zu tun.

UPDATE

Am Ende stellte es, dass auszuprobieren und zu fangen funktioniert. Hier ist mein modifiziertes Skript

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

Antwort

3

Ich wette, Sie verwendet Versuch-Catch falsch. Werfen Sie einen Blick auf folgenden Ausschnitt (zur Vereinfachung erweitert):

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

Sie haben absolut Recht. Ich habe keine Ahnung, wie ich das geschafft habe. – Bruno