Question Try/Catch

Plus d'informations
il y a 5 ans 2 mois #28075 par buissonneau
Try/Catch a été créé par buissonneau
Bonjour à tous,

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.

Plus d'informations
il y a 5 ans 2 mois #28077 par Philippe
Réponse de Philippe sur le sujet Re:Try/Catch
salut xaviar

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.

c'est pas vraiment le but de try/catsh mais pourquoi pas

Question : est-ce que le try \&quot;test\&quot; toutes les lignes contenues entre les { } même si il catch une erreur à la 1ère?

la reponse est \&quot;non\&quot; et du coup je trouve louche le comportement de ton script !
a tu bien le \&quot;pas ok …\&quot; ?

Cela 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 @{}

tu ne peut pas utilisé replace pour vidé un attribut avec replace, il faut utilisé clear sinon tu a une erreur
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.

Plus d'informations
il y a 5 ans 2 mois #28078 par buissonneau
Réponse de buissonneau sur le sujet Re:Try/Catch
Hello, merci
Oui j'ai bien le \&quot;pas ok\&quot;.

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.

Plus d'informations
il y a 5 ans 2 mois #28081 par Philippe
Réponse de Philippe sur le sujet Re:Try/Catch
regarde la variable $ErrorActionPreference qui est sur continue par defaut

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.

Plus d'informations
il y a 5 ans 2 mois #28085 par buissonneau
Réponse de buissonneau sur le sujet Re:Try/Catch
Oui elle est bien sur continue car je souhaite pas qu'il s'arrête.
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.

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