none
PS catch Exception RRS feed

  • Frage

  • Hallo,

    ich bekomme bei dem Cmd (Get-DfsnFolder -Path $dfsFolderPath).Description folgenden Error:

     

    Get-DfsnFolder : Cannot get DFS folder properites on "path to share"
    At Y:\User\scripts\In Progress\DFS_Report_New.ps1:42 char:10
    + $desc = (Get-DfsnFolder -Path $dfsFolderPath).Description -replace "; ...
    +          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (MSFT_DfsNamespaceFolder:Root\Microsoft\...NamespaceFolder) [Get-DfsnFolder], CimException
        + FullyQualifiedErrorId : Windows System Error 1168,Get-DfsnFolder

    Get-DfsnFolder : The requested object could not be found.
    At Y:\User\scripts\In Progress\DFS_Report_New.ps1:42 char:10
    + $desc = (Get-DfsnFolder -Path $dfsFolderPath).Description -replace "; ...
    +          ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
        + CategoryInfo          : ObjectNotFound: (MSFT_DfsNamespaceFolder:Root\Microsoft\...NamespaceFolder) [Get-DfsnFolder], CimException
        + FullyQualifiedErrorId : MI RESULT 6,Get-DfsnFolder

    Der Error kommt nur bei manchen DFS folder. Ich würde diese gerne mit einem try catch block abfangen und eine Ausgabe in der Konsole machen. Das script soll danach einfach weiterlaufen.

    Bisher habe ich folgendes:

    try{$desc = (Get-DfsnFolder -Path $dfsFolderPath).Description -replace ";", " "}catch {"Exception caught - Cannot get DFS folder properties on $dfsFolderPath"}

    Aber es wird mir trotzdem nur der Error geworfen und nicht die Ausgabe aus dem Catch-Block. 

    Danke.


    • Bearbeitet tim--97 Montag, 14. Dezember 2020 10:42
    Montag, 14. Dezember 2020 10:27

Antworten

  • Moin,

    das bedeutet, dass die Ausnahme nicht-terminierend ist. mit -ErrorAction Stop im auslösenden Cmdlet machst Du die Ausnahme terminierend.

    Es ist eigentlich auch ein ganz guter Stil, am Anfang des Skriptes 

    $ErrorActionPreference = "Stop"
    zu setzen und dann alle Ausnahmen routinemäßig abzufangen.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    • Als Antwort vorgeschlagen BOfH-666 Montag, 14. Dezember 2020 11:21
    • Als Antwort markiert tim--97 Montag, 14. Dezember 2020 11:33
    Montag, 14. Dezember 2020 11:14

Alle Antworten

  • Moin,

    das bedeutet, dass die Ausnahme nicht-terminierend ist. mit -ErrorAction Stop im auslösenden Cmdlet machst Du die Ausnahme terminierend.

    Es ist eigentlich auch ein ganz guter Stil, am Anfang des Skriptes 

    $ErrorActionPreference = "Stop"
    zu setzen und dann alle Ausnahmen routinemäßig abzufangen.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    • Als Antwort vorgeschlagen BOfH-666 Montag, 14. Dezember 2020 11:21
    • Als Antwort markiert tim--97 Montag, 14. Dezember 2020 11:33
    Montag, 14. Dezember 2020 11:14
  • Hi,
    danke für deine schnelle Hilfe. Nun passt es.

    VG Tim

    Montag, 14. Dezember 2020 11:33