Question
A supprimer
- ShizuCorp
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 49
- Remerciements reçus 0
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
Laurent Dardenne qui a plus une vision de développeur te donnera peut etre une autre approche
pour moi il n'y a que les if, les switch, et parfois les formules mathématiques !
par contre perso je préfère mettre des variable dans le code a exécute en fonction des conditions
même si tu peut faire qu'une ligne avec ton exemple :
[code:1]Add-ADGroupMember -Identity $dept -Members $login[/code:1]
pour reprendre ton exemple, voila une écriture avec le switch :[code:1]Switch ($dept) {
{$Uoffice -eq \"Lyon\" -and $dept -eq \"NEWMAINT\"} {
$groupedest = \"NEWMAINT\"
}
{$Uoffice -eq \"Lyon\" -and $dept -eq \"NEWMAINT Admin\"} {
$groupedest = \"NEWMAINT Admin\"
}
}
Add-ADGroupMember -Identity $groupedest -Members $login
[/code:1]
tu a ainsi qu'un seul Add-ADGroupMember, plus simple et lisible pour une autre personne qui relis ton code
autre avantage il n'y a qu'une ligne ou une partie qui exécute l'action (le Add-ADGroupMember) plus simple pour le debugage voir pour placer une gestion d'erreur par try/catch
en plus a cas de modif ces souvent sur la ligne de l'action (le Add-ADGroupMember) ou il faut rajouter un serveur AD ou une authentification
tu n'a ainsi qu'une ligne a modifier !!
voila ma vision !!
pour info dans le switch de l'exemple la variable est donner pour ne pas généré d'erreur mais n'est pas utilisé dans le reste du code comme dans les exemples suivant (voir la doc du switch et un tuto ) :
[code:1]#exemple 1 :
Switch ($dept) {
{$Uoffice -eq \"Lyon\" -and $_ -eq \"NEWMAINT\"} {
$groupedest = \"NEWMAINT\"
}
{$Uoffice -eq \"Lyon\" -and $_ -eq \"NEWMAINT Admin\"} {
$groupedest = \"NEWMAINT Admin\"
}
}
########################
#exemple 2 :
Switch ($dept) {
\"NEWMAINT\" {
$groupedest = \"NEWMAINT\"
}
\"NEWMAINT Admin\" {
$groupedest = \"NEWMAINT Admin\"
}
}[/code:1]
Message édité par: 6ratgus, à: 21/12/17 10:07
Message édité par: 6ratgus, à: 21/12/17 10:10<br><br>Message édité par: 6ratgus, à: 21/12/17 10:11
Connexion ou Créer un compte pour participer à la conversation.
- ShizuCorp
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 49
- Remerciements reçus 0
D'accord, bah je vais voir si Laurent Dardenne voit le message pour me dire s'il existe une autre approche!
Donc si j'ai bien compris, si je reformule pour mon cas, cela peut donner ceci ?
[code:1]
Switch ($dept) {
{$Uoffice -eq \"Lyon\" -and $dept -eq \"NEWMAINT\"} {
$groupedest = \"Gi-gmaoLYON\"
}
{$Uoffice -eq \"Lyon\" -and $dept -eq \"NEWMAINT Admin\"} {
$groupedest = \"Gi-gmaoutilsLYON\"
}
{$Uoffice -eq \"Lyon\" -and $dept -eq \"NEWMAINT module intervention\"} {
$groupedest = \"Gi-gmaoDiLYON\"
}
[/code:1]
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
-
- Messages : 1778
- Remerciements reçus 21
le hasard et encore j'ai planté mon navigateur pendant la réponseAh super! Merci de ta réponse rapide!
oui c'est correct je te redonne les liens que j'ai rajouter ton message après dans mon précèdent message pourDonc si j'ai bien compris, si je reformule pour mon cas, cela peut donner ceci ?
voir la doc du switch et un tuto
Connexion ou Créer un compte pour participer à la conversation.
- ShizuCorp
- Auteur du sujet
- Hors Ligne
- Membre senior
-
- Messages : 49
- Remerciements reçus 0
Ahah, merci quand même !le hasard et encore j'ai planté mon navigateur pendant la réponse
D'accord super! merci beaucoup je vais voir ça!oui c'est correct je te redonne les liens que j'ai rajouter ton message après dans mon précèdent message pour
voir la doc du switch et un tuto
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
- Messages : 6311
- Remerciements reçus 68
6ratgus écrit:
Sans spec et sans connaissance de l'infra ciblée, je ne vois pas grand choseLaurent Dardenne qui a plus une vision de développeur te donnera peut etre une autre approche
En passant on peut utiliser une hahstable imbriquée :
[code:1]
$Uoffice=\"Lyon\"
$dept=\"NEWMAINT\"
#Constante
$ChoixGroupe=@{
\"Lyon\" =@{
\"NEWMAINT\"=\"Gi-gmaoLYON\"
\"NEWMAINT Admin\"=\"Gi-gmaoutilsLYON\"
\"NEWMAINT module intervention\"=\"Gi-gmaoDiLYON\"
}
\"Paris\" =@{
\"NEWMAINT\"=\"Gi-Paris\"
\"NEWMAINT Admin\"=\"Gi-gmaParis\"
\"NEWMAINT module intervention\"=\"Gi-gmaoDiParis\"
}
}
#Affichage du contenu
$ChoixGroupe.GetEnumerator()|% {Write-warning $_.Key;$_.value}
#Sélecteur
$Choix=$ChoixGroupe.$UOffice.$Dept
if ($null -eq $choix)
{ Write-error \"données inconnues.\"} #pas d'erreur
$Uoffice=\"Lyon\"
$dept=\"NEWMAIN\"
$Choix=$ChoixGroupe.$Uoffice.$dept
if ($null -eq $choix)
{ Write-error \"données inconnues.\"} #erreur, mais on ne sait pas si c'est le nom de ville ou le nom de groupe qui n'existe pas
[/code:1]
Le seul cas qui n'est pas couvert avec ce type de codage est l'attribution d'une valeur par défaut, alors que le switch le propose.
Pour les cas où le nom de groupe n'existe pas ou est mal orthographié il faut vérifier si le cmdlet utilisé renvoi une exception.
Ainsi on laisse le cmdlet effectuer le contrôle à notre place et on détermine, si possible, dans un try catch la cause de l'erreur.
Mais je peux comprendre qu'en débutant ce n'est peut être pas la meilleure approche
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- A supprimer