- forum
- PowerShell
- Entraide pour les initiés
- If qui ne déclenche pas, sauf après modification du script !
Question If qui ne déclenche pas, sauf après modification du script !
- Alastor
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 35
- Remerciements reçus 1
il y a 4 mois 3 semaines #34457
par Alastor
Bonjour,
Je suis face à un cas que je ne comprends pas.
J'ai un script dans lequel un If veut bien être vrai, qu'après modification du script... je m'explique :
je lance powershell, puis j'y lance mon script, l'un des If ne déclenche pas.
Je modifie le script, en ajoutant une ligne vide n'importe ou par exemple, et le sauvegarde, et là, lorsque je relance le script, le If déclenche comme attendu.
J'annule la modif et réenregistre le script, le If déclenche comme attendu.
Je ferme mon powershell, en relance un, et même défaut... le if n'a pas le comportement attendu, sauf à modifier le script...
Je suis perdu... vous avez déjà rencontré un cas pareil ?
Rien ne remonte comme erreur, même avec un 'set-psdebug -strict' je m'arrache les cheveux...
Je suis face à un cas que je ne comprends pas.
J'ai un script dans lequel un If veut bien être vrai, qu'après modification du script... je m'explique :
je lance powershell, puis j'y lance mon script, l'un des If ne déclenche pas.
Je modifie le script, en ajoutant une ligne vide n'importe ou par exemple, et le sauvegarde, et là, lorsque je relance le script, le If déclenche comme attendu.
J'annule la modif et réenregistre le script, le If déclenche comme attendu.
Je ferme mon powershell, en relance un, et même défaut... le if n'a pas le comportement attendu, sauf à modifier le script...
Je suis perdu... vous avez déjà rencontré un cas pareil ?
Rien ne remonte comme erreur, même avec un 'set-psdebug -strict' je m'arrache les cheveux...
Connexion ou Créer un compte pour participer à la conversation.
- Alastor
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 35
- Remerciements reçus 1
il y a 4 mois 3 semaines #34458
par Alastor
Réponse de Alastor sur le sujet If qui ne déclenche pas, sauf après modification du script !
Alors, mon problème n'est pas que le if ne fonctionne pas, c'est en fait un " | where-object " dans le If qui ne fait pas son boulot, sous les mêmes conditions.
Connexion ou Créer un compte pour participer à la conversation.
- Alastor
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 35
- Remerciements reçus 1
il y a 4 mois 3 semaines - il y a 4 mois 3 semaines #34459
par Alastor
Réponse de Alastor sur le sujet If qui ne déclenche pas, sauf après modification du script !
Alors... j'ai trouvé mais je ne m'explique pas le pourquoi...
Dans le where-object, je fait un -match dont la regexp est dans une variable.
En fait, la variable est "vide" quand ça marche pas, en modifiant/relançant, elle a bien la valeur attendue.
En fait, cette variable est initialisée depuis une hashtable dont la clef est elle même une variable... pour être plus clair, je faisait la chose suivante :
Et là, j'avais le fonctionnement "aléatoire" évoqué...
En faisant comme ceci :
je n'ai plus de problème...
Si vous avez une explication, je suis preneur...
Dans le where-object, je fait un -match dont la regexp est dans une variable.
En fait, la variable est "vide" quand ça marche pas, en modifiant/relançant, elle a bien la valeur attendue.
En fait, cette variable est initialisée depuis une hashtable dont la clef est elle même une variable... pour être plus clair, je faisait la chose suivante :
$Mavariable = $MaHashtable.$Maclef
Et là, j'avais le fonctionnement "aléatoire" évoqué...
En faisant comme ceci :
$Mavariable = $MaHashtable[$Maclef]
je n'ai plus de problème...
Si vous avez une explication, je suis preneur...
Dernière édition: il y a 4 mois 3 semaines par Alastor.
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 4 mois 3 semaines #34464
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet If qui ne déclenche pas, sauf après modification du script !
Salut Alastor,
A mon avis le problème est ailleurs, mais il n'est pas avec la syntaxe pour accéder aux éléments de ta table de hash. Les deux syntaxes font la même chose.
Souvent l'opérateur -Match est en cause car il fonctionne avec les expressions régulières (Regex). Il ne faut pas le mélanger avec l'opérateur -Like qui lui travaille avec les caractères génériques * et ?.
Les erreurs sur les Regex sont très fréquentes et les caractères * et ? n'ont pas du tout la même signification qu'avec -Like.
Je serais toi, je vérifierais le contenu de cette dernière.
Arnaud
A mon avis le problème est ailleurs, mais il n'est pas avec la syntaxe pour accéder aux éléments de ta table de hash. Les deux syntaxes font la même chose.
Souvent l'opérateur -Match est en cause car il fonctionne avec les expressions régulières (Regex). Il ne faut pas le mélanger avec l'opérateur -Like qui lui travaille avec les caractères génériques * et ?.
Les erreurs sur les Regex sont très fréquentes et les caractères * et ? n'ont pas du tout la même signification qu'avec -Like.
Je serais toi, je vérifierais le contenu de cette dernière.
Arnaud
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- Alastor
- Auteur du sujet
- Hors Ligne
- Membre junior
Réduire
Plus d'informations
- Messages : 35
- Remerciements reçus 1
il y a 4 mois 3 semaines - il y a 4 mois 3 semaines #34466
par Alastor
Réponse de Alastor sur le sujet If qui ne déclenche pas, sauf après modification du script !
Je confirme bien que dans un cas ma variable contenant le regex était "vide".
Les " sont volontaires, était-elle égale à $null ou à "" aucune idée...
Donc ce n'est vraiment pas un problème de syntaxe de regex.
Et je ne vois pas en quoi ajouter une ligne, par exemple, n'importe ou dans le script ne le ferais fonctionner que tant que l'on ne rédémarre pas powershell serait en lien avec la regex.
Cela dit, je vais tenter de le reproduire dans un script exprès pour voir.
Les " sont volontaires, était-elle égale à $null ou à "" aucune idée...
Donc ce n'est vraiment pas un problème de syntaxe de regex.
Et je ne vois pas en quoi ajouter une ligne, par exemple, n'importe ou dans le script ne le ferais fonctionner que tant que l'on ne rédémarre pas powershell serait en lien avec la regex.
Cela dit, je vais tenter de le reproduire dans un script exprès pour voir.
Dernière édition: il y a 4 mois 3 semaines par Alastor.
Connexion ou Créer un compte pour participer à la conversation.
- Arnaud Petitjean
- Hors Ligne
- Modérateur
il y a 4 mois 3 jours #34491
par Arnaud Petitjean
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Réponse de Arnaud Petitjean sur le sujet If qui ne déclenche pas, sauf après modification du script !
Salut Alastor,
Je ne vois vraiment pas d'où vient ton problème car les syntaxes pour acceder aux éléments d'une table de hash sont correctes dans les 2 formes.
Je ne vois vraiment pas d'où vient ton problème car les syntaxes pour acceder aux éléments d'une table de hash sont correctes dans les 2 formes.
MVP PowerShell et créateur de ce magnifique forum
Auteur de 6 livres PowerShell aux éditions ENI
Fondateur de la société Start-Scripting
Besoin d'une formation PowerShell ?
Connexion ou Créer un compte pour participer à la conversation.
- forum
- PowerShell
- Entraide pour les initiés
- If qui ne déclenche pas, sauf après modification du script !
Temps de génération de la page : 0.113 secondes
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les initiés
- If qui ne déclenche pas, sauf après modification du script !