2016-10-30 4 views
0

Gibt es eine Möglichkeit, die Funktion Invoke-Sqlcmd2 nicht den Rest des Skripts auf Fehler zu beenden?Invoke-Sqlcmd2 wird nicht bei Fehler beendet

Ich möchte, dass der Rest meines Skripts weiterhin ausgeführt wird, selbst wenn dieser Befehl fehlschlägt.

Ich habe den Code gegraben und mein Gedanke ist, dass es etwas mit dem Parameter -ErrorAction zu tun hat.

Im Folgenden finden Sie Linie 488 des Skripts:

Catch # For other exception 
{ 
    Write-Verbose "Capture Other Error" 

    $Err = $_ 

    if ($PSBoundParameters.Verbose) {Write-Verbose "Other Error: $Err"} 

    switch ($ErrorActionPreference.tostring()) 
    { 
     {'SilentlyContinue','Ignore' -contains $_} {} 
     'Stop' {  Throw $Err} # Removing this line doesn't work 
     'Continue' { Throw $Err} 
     Default { Throw $Err} 
    } 
} 

Irgendwelche Ideen auf, wie man diesen Befehl bekommen, um ‚nicht beenden‘?

Lösung: Danke für die Info. Am Ende habe ich den Fehlerbehandlungsbereich von invoke-sqlcmd2 in eine try-catch-Trap eingeschlossen.

+0

Der Catch {} soll Ausnahmen behandeln, die vom Code ausgelöst werden. Wenn Sie die switch-Anweisung oder den gesamten Code kommentieren, sollte es funktionieren. Es stoppt bei Stopp, Weiter UND die Standardaktion. – Martin

+1

Oder besser, beseitigen Sie den Fehler in $ Err. Was sagt es? – Martin

+0

Danke Martin. Diese Information half mit der obigen Lösung. – Mike

Antwort

0

Setzen Sie das Invoke-SQLCMD2 in einen try-catch-Block und protokollieren Sie möglicherweise den Fehler. So behandeln Sie den Fehler und das Skript wird fortgesetzt.

Verwandte Themen