Question
Switch avec wildcard
- Guillaume
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 116
- Remerciements reçus 0
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 ?...
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.
- Philippe
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 1778
- Remerciements reçus 21
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
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.
- Guillaume
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 116
- Remerciements reçus 0
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é...
J'ai pourtant fait des choses plus compliquées que ça mais là, je bloque. Navré...
Connexion ou Créer un compte pour participer à la conversation.
- xyz
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 69
il y a 9 ans 1 mois #23454
par xyz
Tutoriels PowerShell
Réponse de xyz sur le sujet Re:Switch avec wildcard
Salut,
pb intéressant.
Guillaume_F écrit:
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 = \"1A - Fin contrat\"
$activite1 = \"1A*\"
$activite2 = \"2A*\"
$activite3 = \"3A*\"
$sb={
$activite = 'Null'
Write-Warning $_
Switch -Wildcard ($_) {
$activite1 {Write-host \"Cas 1\"; $activite = \"Activité 1\";break}
$activite2 {Write-host \"Cas 2\";$activite = \"Activité 2\";break}
$activite3 {Write-host \"Cas 3\";$activite = \"Activité 3\";break}
default {Write-host \"Cas par défault\"}
}
Write-Host $activite
}
\"1A - Fin contrat\",\"1Abcd\", \"ddsds 1A dfdfdf\"| % $sb
$activite1 = \"1A*\", \"1B*\"
$activite2 = \"2A*\", \"2B*\"
$activite3 = \"3A*\", \"3B*\"
\"1A - Fin contrat\",\"1Abcd\", \"ddsds 1A dfdfdf\",'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 \"1A*$OFS1B*\", par défaut $OFS contient un espace -> \"1A* 1B*\".
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
?).
pb intéressant.
Guillaume_F écrit:
Déjà il faut connaitre ce que tu souhaites faire, à partir de là on peut (souvent) comprendre ce qui ne fonctionne pas et pourquoi.ça ne me donne pas le résultat souhaité...
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 = \"1A - Fin contrat\"
$activite1 = \"1A*\"
$activite2 = \"2A*\"
$activite3 = \"3A*\"
$sb={
$activite = 'Null'
Write-Warning $_
Switch -Wildcard ($_) {
$activite1 {Write-host \"Cas 1\"; $activite = \"Activité 1\";break}
$activite2 {Write-host \"Cas 2\";$activite = \"Activité 2\";break}
$activite3 {Write-host \"Cas 3\";$activite = \"Activité 3\";break}
default {Write-host \"Cas par défault\"}
}
Write-Host $activite
}
\"1A - Fin contrat\",\"1Abcd\", \"ddsds 1A dfdfdf\"| % $sb
$activite1 = \"1A*\", \"1B*\"
$activite2 = \"2A*\", \"2B*\"
$activite3 = \"3A*\", \"3B*\"
\"1A - Fin contrat\",\"1Abcd\", \"ddsds 1A dfdfdf\",'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 \"1A*$OFS1B*\", par défaut $OFS contient un espace -> \"1A* 1B*\".
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.
- Guillaume
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 116
- Remerciements reçus 0
il y a 9 ans 1 mois #23455
par Guillaume
Réponse de Guillaume sur le sujet Re:Switch avec wildcard
Laurent Dardenne écrit:
En effet !
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 \"Description\".
[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 \"Wildcard\" dans \"Switch\".
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).
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 \"Description\".
[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 \"Wildcard\" dans \"Switch\".
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.
- Guillaume
- Auteur du sujet
- Hors Ligne
- Membre premium
-
Réduire
Plus d'informations
- Messages : 116
- Remerciements reçus 0
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 \"bête\" et qui fait pas super \"pro\" mais bon...
[code:1]Switch -Wildcard ($Utilisateur_Metier) {
\"1A*\" {$activite = \"Activité 1\"}
\"1B*\" {$activite = \"Activité 1\"}
\"2A*\" {$activite = \"Activité 2\"}
\"2B*\" {$activite = \"Activité 2\"}
}
Puis, en fonction de ce que je veux :
Switch ($Activite) {
\"Activité 1\" {
Switch ($Autre_Variable) {
\"Exemple 1\" {Action}
\"Exemple 2\" {Action}
}
}
\"Activité 2\" {
Switch ($Autre_Variable) {
\"Exemple 1\" {Action}
\"Exemple 2\" {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 \"switch\", je prends ! Ne serait-ce que ma connaissance personnelle
J'ai trouvé une solution de contournement \"bête\" et qui fait pas super \"pro\" mais bon...
[code:1]Switch -Wildcard ($Utilisateur_Metier) {
\"1A*\" {$activite = \"Activité 1\"}
\"1B*\" {$activite = \"Activité 1\"}
\"2A*\" {$activite = \"Activité 2\"}
\"2B*\" {$activite = \"Activité 2\"}
}
Puis, en fonction de ce que je veux :
Switch ($Activite) {
\"Activité 1\" {
Switch ($Autre_Variable) {
\"Exemple 1\" {Action}
\"Exemple 2\" {Action}
}
}
\"Activité 2\" {
Switch ($Autre_Variable) {
\"Exemple 1\" {Action}
\"Exemple 2\" {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 \"switch\", 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
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Switch avec wildcard