Question If qui ne déclenche pas, sauf après modification du script !

Plus d'informations
il y a 3 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...

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

Plus d'informations
il y a 3 mois 3 semaines #34458 par Alastor
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.

Plus d'informations
il y a 3 mois 3 semaines - il y a 3 mois 3 semaines #34459 par Alastor
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 :
$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 3 mois 3 semaines par Alastor.

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

Plus d'informations
il y a 3 mois 3 semaines #34464 par Arnaud Petitjean
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

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.

Plus d'informations
il y a 3 mois 3 semaines - il y a 3 mois 3 semaines #34466 par Alastor
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.
Dernière édition: il y a 3 mois 3 semaines par Alastor.

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

Plus d'informations
il y a 3 mois 5 jours #34491 par Arnaud Petitjean
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.

 

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.

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