Question Gestion des erreurs non attendues

Plus d'informations
il y a 14 ans 3 semaines #11664 par kato
Bonjour,

J'ai débuté il y a quelques mois sur le scripting powershell , grâce à vous , le livre .

J'ai pu écrire quelques scripts qui tournent en production .

Sur certains scripts j'ai parfois une erreur non prévue
comme par exemple : pas de droits d'accés sur un répértoire ou bien pas assez d'espace disque en cas copie ou de move .

Cela est un peu embêtant , alors j'ai pensé à la gestion des erreurs avec ce type de commandes

exemple :

try{

Set-Location c:\toto55 -ErrorAction stop


if(!$?){
throw $error[0].Exception
}
}
catch{
Write-Host \"Erreur : \" $error[0].Exception.Message
$code = \"261\"
$code
exit $code
}

Cependant cela m'oblige à modifier tous mes scripts et
de mettre un bloc de test comme dans l'exemple dans chaque action car en cas d'erreur non prévue je souhaite arrêter le script et sortir avec un exit code spécifique pour ne pas lancer la suite des traitements qui dependent de ce batch .

Je voulais juste savoir s'il y a un moyen plus souple
pour obtenir le même résultat sans devoir mettre ce bout de code partout , j'ai pensé au functions mais je ne suis pas encore assez calé sur l'utilisation des functions .

Si ma question n'est pas claire , merci de me le faire savoir .

Merci d'avance

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 3 semaines #11668 par Richard Lazaro
alors si tu veux faire une capture d'erreur globale.
Tu peux jouer avec l'intruction trap qui capturera toute erreur qui surgirait.

Tu peux custom ton trap pour l'adapter en fonctio du type d'erreur mais je te laisse voir avec l'aide.

Bien Cordialement,
Richard Lazaro.

Think-MS : (Get-Life).Days | %{ Learn-More }

\\"Problems cannot be solved by the same level of thinking that created them.\\" - Albert Einstein

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 14 ans 3 semaines #11672 par xyz
Réponse de xyz sur le sujet Re:Gestion des erreurs non attendues
Salut,
kato75 écrit:

....
Cependant cela m'oblige à modifier tous mes scripts et
de mettre un bloc de test comme dans l'exemple dans chaque action ....

C'est l'environnement d'exécution qu'il faut changer, en utilîsant $ErrorActionPreference. Je n'ai pas retrouvé le post qui abordait le sujet, mais voici une solution, pas certains qu'elle réponde à ton besoin.
Etant donné que PowerShell peut émettre des erreurs non bloquantes, on exécute les instructions $Command dans un contexte où $ErrorActionPreference est égale à 'Stop'.
En production, on présuppose les prérequis à l'exécution du code, droits, accès disque, etc comme étant toujours validés.
Ainsi,en appelant le code dans ce contexte 'protégé', on se prémunit de leur hypothétique changement.
Code de la fonction .<br><br>Message édité par: Laurent Dardenne, à: 12/05/12 15:21

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.036 secondes
Propulsé par Kunena