2010-10-29 6 views
1

J'ai un module de script dont le fichier .psm1 exécute une commande qui échouera si une certaine valeur de registre n'est pas présente. Je veux ignorer cet échec, de sorte que le script .psm1 exécute la commande comme:Erreurs non ignorées dans Start-Job InitializationScript

CommandThatMayFail -ea SilentlyContinue 

Cela fonctionne très bien quand j'importer le module dans une session PowerShell. Mais l'une des fonctions de ce module démarre certains Jobs PS qui nécessitent également l'importation du module. Lorsque j'importe le module dans InitializationScript du travail, les échecs de CommandThatMayFail ne sont pas ignorés et le travail se termine. J'ai essayé d'encapsuler CommandThatMayFail dans un bloc Try/Catch, mais cela n'a pas aidé.

J'ai évité le problème en important le module dans ScriptBlock du travail au lieu du code InitializationScript. Mais je suis toujours curieux de savoir ce qui se passe ici. Quelqu'un peut-il nous éclairer?

Répondre

0

Essayez de mettre un piège dans la même portée que la InitializationScript mais PRÉCÉDANT dans le code:

Trap{ 
    <commands you want it to run in case of error>; 
    continue 
    } 

La partie importante il y a le point-virgule et le continue. J'ai eu le même problème aujourd'hui, assez ironiquement, et cela m'a arrangé. Je pense que c'est un problème avec les erreurs et les portées terminées/non terminées, mais c'est la seule façon de le résoudre dans mon propre script.

+0

Piège n'a pas fonctionné mieux que try/catch (comme je m'y attendais). Il me semble que PowerShell échoue le travail si des erreurs sans fin se produisent dans InitializationScript. – OldFart

Questions connexes