Question Switch avec wildcard

Plus d'informations
il y a 9 ans 1 mois #23451 par Guillaume
Switch avec wildcard a été créé par Guillaume
Bonjour,

Il y a un truc que je ne comprends pas...

[code:1]$activite = $Null ; $metier = $Null

$metier = \"1A - Fin contrat\"
$activite1 = \"1A*\", \"1B*\"
$activite2 = \"2A*\", \"2B*\"
$activite3 = \"3A*\", \"3B*\"

Switch -Wildcard ($metier) {
{$activite1} {$activite = \"Activité 1\"}
{$activite2} {$activite = \"Activité 2\"}
{$activite3} {$activite = \"Activité 3\"}
}

Write-Host $activite[/code:1]

Le résultat est toujours le dernier alors que j'attends le premier.

[code:1]$activite = $Null ; $metier = $Null

$metier = \"1A - Fin contrat\"
$activite1 = \"1A*\", \"1B*\"
$activite2 = \"2A*\", \"2B*\"
$activite3 = \"3A*\", \"3B*\"

Switch -Wildcard ($metier) {
{$activite1 -contains $_} {$activite = \"Activité 1\"}
{$activite2 -contains $_} {$activite = \"Activité 2\"}
{$activite3 -contains $_} {$activite = \"Activité 3\"}
}

Write-Host $activite[/code:1]

Il n'y a pas de résultat.


Qu'est-ce que je fais mal ?... :(

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

Plus d'informations
il y a 9 ans 1 mois #23452 par Philippe
Réponse de Philippe sur le sujet Re:Switch avec wildcard
salut Guillaume_F

une petite formation peut être ! ;)

la doc PowerShell en Français pour les operateurs <br><br>Message édité par: 6ratgus, à: 7/04/17 12:30

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

Plus d'informations
il y a 9 ans 1 mois #23453 par Guillaume
Réponse de Guillaume sur le sujet Re:Switch avec wildcard
J'ai à peu près tout essayé mais sûrement mal car ça ne me donne pas le résultat souhaité...

J'ai pourtant fait des choses plus compliquées que ça mais là, je bloque. Navré... :pinch:

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

Plus d'informations
il y a 9 ans 1 mois #23454 par xyz
Réponse de xyz sur le sujet Re:Switch avec wildcard
Salut,
pb intéressant.
Guillaume_F écrit:

ça ne me donne pas le résultat souhaité...

Déjà il faut connaitre ce que tu souhaites faire, à partir de là on peut (souvent) comprendre ce qui ne fonctionne pas et pourquoi.

Je suppose que tu souhaites tester des noms d'activités, par exemple celles débutant par '1A' ou '1B'. Ces deux là formant un groupe.

Un exemple :
[code:1]
$activite = $Null
$metier = $Null

$metier = \&quot;1A - Fin contrat\&quot;
$activite1 = \&quot;1A*\&quot;
$activite2 = \&quot;2A*\&quot;
$activite3 = \&quot;3A*\&quot;


$sb={
$activite = 'Null'
Write-Warning $_
Switch -Wildcard ($_) {
$activite1 {Write-host \&quot;Cas 1\&quot;; $activite = \&quot;Activité 1\&quot;;break}
$activite2 {Write-host \&quot;Cas 2\&quot;;$activite = \&quot;Activité 2\&quot;;break}
$activite3 {Write-host \&quot;Cas 3\&quot;;$activite = \&quot;Activité 3\&quot;;break}
default {Write-host \&quot;Cas par défault\&quot;}
}

Write-Host $activite
}
\&quot;1A - Fin contrat\&quot;,\&quot;1Abcd\&quot;, \&quot;ddsds 1A dfdfdf\&quot;| % $sb

$activite1 = \&quot;1A*\&quot;, \&quot;1B*\&quot;
$activite2 = \&quot;2A*\&quot;, \&quot;2B*\&quot;
$activite3 = \&quot;3A*\&quot;, \&quot;3B*\&quot;
\&quot;1A - Fin contrat\&quot;,\&quot;1Abcd\&quot;, \&quot;ddsds 1A dfdfdf\&quot;,'1A 1B','113 1Abcde 1Bcde','1A1B','1A fdfdf 1B dfdfdf'| % $sb
[/code:1]
Le premier jeux de test fonctionne de manière attendu.
Le second déjà moins, je pense que la variable $Activité1 est transformée en string, en utilisant $OFS puisqu'elle contient un tableau de string.

On a donc une recherche sur \&quot;1A*$OFS1B*\&quot;, par défaut $OFS contient un espace -&gt; \&quot;1A* 1B*\&quot;.
A priori tu cherches à créer une alternative d'expression régulières[code:1] '(1A|1B«»)*'[/code:1], mais avec ton code c'est plus une concaténation de wildcard (à confirmer par MS :-) ?).

Tutoriels PowerShell

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

Plus d'informations
il y a 9 ans 1 mois #23455 par Guillaume
Réponse de Guillaume sur le sujet Re:Switch avec wildcard
Laurent Dardenne écrit:

Salut,
pb intéressant.


En effet !

Déjà il faut connaitre ce que tu souhaites faire, à partir de là on peut (souvent) comprendre ce qui ne fonctionne pas et pourquoi.


Je veux qu'à partir d'une liste de métier, le script annonce l'activité dont fait partie le métier. Là c'est pour un test, une fois que j'aurai pigé le principe, je peux l'étendre à d'autres scénarios avec plus de contenu.

Là, pour l'exemple : j'ai des métiers stockés dans un attribut AD \&quot;Description\&quot;.

[code:1]$description = Get-AdUser -Identity $utilisateur -Properties Description
$metier = $description.Description[/code:1]

Dans la description, il y a le métier mais il peut aussi y avoir d'autres infos derrière d'où l'utilisation de \&quot;Wildcard\&quot; dans \&quot;Switch\&quot;.
Puis, je fais la liste des différents métiers pour chaque activité et selon le métier, je veux connaître l'activité (ou créer des variables, etc. mais ça je verrai plus tard).

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

Plus d'informations
il y a 9 ans 1 mois #23456 par Guillaume
Réponse de Guillaume sur le sujet Re:Switch avec wildcard
Désolé pour le double-post mais c'est plus clair que si j'édite.

J'ai trouvé une solution de contournement \&quot;bête\&quot; et qui fait pas super \&quot;pro\&quot; mais bon...

[code:1]Switch -Wildcard ($Utilisateur_Metier) {
\&quot;1A*\&quot; {$activite = \&quot;Activité 1\&quot;}
\&quot;1B*\&quot; {$activite = \&quot;Activité 1\&quot;}
\&quot;2A*\&quot; {$activite = \&quot;Activité 2\&quot;}
\&quot;2B*\&quot; {$activite = \&quot;Activité 2\&quot;}
}

Puis, en fonction de ce que je veux :

Switch ($Activite) {
\&quot;Activité 1\&quot; {
Switch ($Autre_Variable) {
\&quot;Exemple 1\&quot; {Action}
\&quot;Exemple 2\&quot; {Action}
}
}
\&quot;Activité 2\&quot; {
Switch ($Autre_Variable) {
\&quot;Exemple 1\&quot; {Action}
\&quot;Exemple 2\&quot; {Action}
}
}
}[/code:1]

C'est sûr, ça prend plus de place dans le script mais au moins j'ai le résultat souhaité.

Cela dit, si quelqu'un a une solution pour regrouper les variables dans le premier \&quot;switch\&quot;, je prends ! Ne serait-ce que ma connaissance personnelle ;)

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

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