Question
Try/Catch
- buissonneau
- Auteur du sujet
- Hors Ligne
- Membre senior
- Messages : 78
- Remerciements reçus 0
voilà, j'essaye d'implémenter dans mes scripts le Try/Catch, soit dans mes fonctions, soit dans mon script directement afin de réduire l'imbrication d' If/Else.
Du coup peut-être que j'ai mal compris ce qu'il était possible de faire avec le Try/Catch. Je m'explique.
Je test plusieurs commande à la suite :
[code:1]
Try {
commande 1
commande 2
commande 3
write-output \"ok\"
}
Catch {
$($PSItem.ToString()) #ou $PSItem en fonction
Write-output \"pas ok $($PSItem.ToString())\"
}
[/code:1]
Mais ce que je remarque, c'est que même si le catch attrape bien l'erreur par exemple de la commande 3, j'ai quand même le \"OK\" du Try
Question : est-ce que le try \"test\" toutes les lignes contenues entre les { } même si il catch une erreur à la 1ère?
Je sais pas si je suis clair
Francis
Message édité par: xaviar, à: 28/01/19 09:40<br><br>Message édité par: xaviar, à: 28/01/19 11:10
Francis
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
- Messages : 1778
- Remerciements reçus 21
c'est pas vraiment le but de try/catsh mais pourquoi pasvoilà, j'essaye d'implémenter dans mes scripts le Try/Catch, soit dans mes fonctions, soit dans mon script directement afin de réduire l'imbrication d' If/Else.
la reponse est \"non\" et du coup je trouve louche le comportement de ton script !Question : est-ce que le try \"test\" toutes les lignes contenues entre les { } même si il catch une erreur à la 1ère?
a tu bien le \"pas ok …\" ?
tu ne peut pas utilisé replace pour vidé un attribut avec replace, il faut utilisé clear sinon tu a une erreurCela m'arrive sur la commande Set-ADuser ou j'ai tout le temps en retour erreur '-Replace', pourtant lorsque je test la commande toute seule, pas d'erreur, que ce soit avec les commutateurs ou en utilisant -replace @{}
si je me souvient bien mais je peut me tromper, sur les anciennes versions du module AD, il fallait vérifiais avant si l'attribut que tu voulais modifier n'était pas vide sinon t'avais une erreur<br><br>Message édité par: 6ratgus, à: 28/01/19 11:17
Connexion ou Créer un compte pour participer à la conversation.
- buissonneau
- Auteur du sujet
- Hors Ligne
- Membre senior
- Messages : 78
- Remerciements reçus 0
Oui j'ai bien le \"pas ok\".
Je te rassure, c'est pas que pour réduire les if/else mais aussi pour gérer les erreurs
Et je pense qu'effectivement c'était à cause d'une variable vide pour le set-aduser pour ca que je l'ai enlevé.
en faite j'ai une sortie avec une fonction LOG après le set-aduser, et malgré le catch il execute quand même la fonction. (ici représenté par le Write-output 'ok'.)
C'est pour cela que j'en étais à me poser la question sur le côté séquentiel du try/catch.
Mais du coup tu me rassures, et je vais essayer de voir pourquoi, en tout cas en mode débug tu vois bien qu'il passe par l'étape en dessous avant d'aller au catch.
Francis
Francis
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
- Messages : 1778
- Remerciements reçus 21
et aussi essai en ajoutent le paramètre -ErrorAction stop à Set-AdUser
je n'est pas réussi à reproduire ton problème quelque soit erreur, quel version de PowerShell utilise tu ?
Connexion ou Créer un compte pour participer à la conversation.
- buissonneau
- Auteur du sujet
- Hors Ligne
- Membre senior
- Messages : 78
- Remerciements reçus 0
Je suis en 5.1.###### sur un serveur 2016.
Bon après je suis sur le ISE.
En tout cas, j'ai plus l'erreur maintenant, je pense que c'était à cause d'un champ vide comme tu le disais,d'une variable déclarée.
Je vais quand même voir avec le -ErrorAction pour m'en assurer.
Francis
Francis
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- Try/Catch