Question
mon script ne fonctione pas (fonction + switch)
- akwell
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 12 ans 8 mois #15212
par akwell
mon script ne fonctione pas (fonction + switch) a été créé par akwell
bonjour,
je ne comprends pas pourquoi mon script ne fonctionne pas , je n'arrive pas a afficher les valeur de Qmail et Qalias
merci pour votre aide
[code:1]function Qalias
{
Write-Host \"[1]- Utilisateur a besoin d'un alias prenom.nom@ulb.ac.be\"
Write-Host \"[2]- Utilisateur a besoin d'un alias net-ID@ulb.ac.be\"
Write-Host \"[3]- Utilisateur n'a pas besoin d'un alias\"
$Qalias = Read-Host \"faites votre choix: 1 - 3 (defaut:1)\"
Switch ($Qalias) {
1 {$Qalias= \"yes-full\"}
2 {$Qalias= \"yes-netid\"}
3 {$Qalias= \"no\"}
default {
$Qmailbox= \"yes\"
Write-Host \"Vous avez choisi le choix par defaut: Utilisateur a besoin d'un alias prenom.nom@ulb.ac.be\" -foregroundcolor red}
}
}
function Qmailbox
{
Write-Host \"[1]- Utilisateur a besoin d'une mailbox\"
Write-Host \"[2]- Utilisateur n'a pas besoin d'une mailbox\"
$Qmailbox = Read-Host \"faites votre choix: 1 ou 2 (defaut:1)\"
Switch ($Qmailbox) {
1 {$Qmailbox= \"yes\"
Qalias
}
2 {$Qmailbox= \"no\"
$Qalias= \"no\"}
default {
$Qmailbox= \"yes\"
Write-Host \"Vous avez choisi le choix par defaut :Utilisateur a besoin d'une mailbox\" -foregroundcolor red}
}
}
Qmailbox
Write-Host $Qmailbox
Write-Host $Qalias
[/code:1]
je ne comprends pas pourquoi mon script ne fonctionne pas , je n'arrive pas a afficher les valeur de Qmail et Qalias
merci pour votre aide
[code:1]function Qalias
{
Write-Host \"[1]- Utilisateur a besoin d'un alias prenom.nom@ulb.ac.be\"
Write-Host \"[2]- Utilisateur a besoin d'un alias net-ID@ulb.ac.be\"
Write-Host \"[3]- Utilisateur n'a pas besoin d'un alias\"
$Qalias = Read-Host \"faites votre choix: 1 - 3 (defaut:1)\"
Switch ($Qalias) {
1 {$Qalias= \"yes-full\"}
2 {$Qalias= \"yes-netid\"}
3 {$Qalias= \"no\"}
default {
$Qmailbox= \"yes\"
Write-Host \"Vous avez choisi le choix par defaut: Utilisateur a besoin d'un alias prenom.nom@ulb.ac.be\" -foregroundcolor red}
}
}
function Qmailbox
{
Write-Host \"[1]- Utilisateur a besoin d'une mailbox\"
Write-Host \"[2]- Utilisateur n'a pas besoin d'une mailbox\"
$Qmailbox = Read-Host \"faites votre choix: 1 ou 2 (defaut:1)\"
Switch ($Qmailbox) {
1 {$Qmailbox= \"yes\"
Qalias
}
2 {$Qmailbox= \"no\"
$Qalias= \"no\"}
default {
$Qmailbox= \"yes\"
Write-Host \"Vous avez choisi le choix par defaut :Utilisateur a besoin d'une mailbox\" -foregroundcolor red}
}
}
Qmailbox
Write-Host $Qmailbox
Write-Host $Qalias
[/code:1]
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 12 ans 8 mois #15214
par Philippe
Réponse de Philippe sur le sujet Re:mon script ne fonctione pas (fonction + switch)
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 12 ans 8 mois #15215
par Philippe
Réponse de Philippe sur le sujet Re:mon script ne fonctione pas (fonction + switch)
dejas bonjour akwell (j'ai oublier le post avant)
en y regardent a deux fois, tu a deux problemes/alternative :
soit tes variables sont globale
soit tes fonctions renvoie une ou des valeurs
a toi de voir
mais y te faut modifier ton script en fonction de ce choix.
en y regardent a deux fois, tu a deux problemes/alternative :
soit tes variables sont globale
soit tes fonctions renvoie une ou des valeurs
a toi de voir
mais y te faut modifier ton script en fonction de ce choix.
Connexion ou Créer un compte pour participer à la conversation.
- akwell
- Auteur du sujet
- Hors Ligne
- Nouveau membre
-
Réduire
Plus d'informations
- Messages : 9
- Remerciements reçus 0
il y a 12 ans 8 mois #15216
par akwell
Réponse de akwell sur le sujet Re:mon script ne fonctione pas (fonction + switch)
ceci semble fonctionner:
[code:1]function Qalias
{
Write-Host \"[1]- Utilisateur a besoin d'un alias prenom.nom@ulb.ac.be\"
Write-Host \"[2]- Utilisateur a besoin d'un alias net-ID@ulb.ac.be\"
Write-Host \"[3]- Utilisateur n'a pas besoin d'un alias\"
$Qalias = Read-Host \"faites votre choix: 1 - 3 (defaut:1)\"
Switch ($Qalias) {
1 {$global:Qalias= \"yes-full\"}
2 {$global:Qalias= \"yes-netid\"}
3 {$global:Qalias= \"no\"}
default {
$golbal:Qmailbox= \"yes\"
Write-Host \"Vous avez choisi le choix par defaut: Utilisateur a besoin d'un alias prenom.nom@ulb.ac.be\" -foregroundcolor red}
}
}
function Qmailbox
{
Write-Host \"[1]- Utilisateur a besoin d'une mailbox\"
Write-Host \"[2]- Utilisateur n'a pas besoin d'une mailbox\"
$Qmailbox = Read-Host \"faites votre choix: 1 ou 2 (defaut:1)\"
Switch ($Qmailbox) {
1 {$global:Qmailbox= \"yes\"
Qalias
}
2 {$global:Qmailbox= \"no\"
$global:Qalias= \"no\"}
default {
$global:Qmailbox= \"yes\"
Write-Host \"Vous avez choisi le choix par defaut :Utilisateur a besoin d'une mailbox\" -foregroundcolor red}
}
}
Qmailbox
Write-Host $Qmailbox
Write-Host $Qalias
[/code:1]
[code:1]function Qalias
{
Write-Host \"[1]- Utilisateur a besoin d'un alias prenom.nom@ulb.ac.be\"
Write-Host \"[2]- Utilisateur a besoin d'un alias net-ID@ulb.ac.be\"
Write-Host \"[3]- Utilisateur n'a pas besoin d'un alias\"
$Qalias = Read-Host \"faites votre choix: 1 - 3 (defaut:1)\"
Switch ($Qalias) {
1 {$global:Qalias= \"yes-full\"}
2 {$global:Qalias= \"yes-netid\"}
3 {$global:Qalias= \"no\"}
default {
$golbal:Qmailbox= \"yes\"
Write-Host \"Vous avez choisi le choix par defaut: Utilisateur a besoin d'un alias prenom.nom@ulb.ac.be\" -foregroundcolor red}
}
}
function Qmailbox
{
Write-Host \"[1]- Utilisateur a besoin d'une mailbox\"
Write-Host \"[2]- Utilisateur n'a pas besoin d'une mailbox\"
$Qmailbox = Read-Host \"faites votre choix: 1 ou 2 (defaut:1)\"
Switch ($Qmailbox) {
1 {$global:Qmailbox= \"yes\"
Qalias
}
2 {$global:Qmailbox= \"no\"
$global:Qalias= \"no\"}
default {
$global:Qmailbox= \"yes\"
Write-Host \"Vous avez choisi le choix par defaut :Utilisateur a besoin d'une mailbox\" -foregroundcolor red}
}
}
Qmailbox
Write-Host $Qmailbox
Write-Host $Qalias
[/code:1]
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 12 ans 8 mois #15218
par Philippe
Réponse de Philippe sur le sujet Re:mon script ne fonctione pas (fonction + switch)
oui c mieu
maintenant attetion au possible bug (c peut etre voulus)
dans ta fonction Qalias tu renseigne la variable Qmailbox pour la reponse par defaut
de plus tu lui donne la valeur \"yes\" au lieu de \"yes-full\"
mais c'est peut etre voulus
maintenant attetion au possible bug (c peut etre voulus)
dans ta fonction Qalias tu renseigne la variable Qmailbox pour la reponse par defaut
de plus tu lui donne la valeur \"yes\" au lieu de \"yes-full\"
mais c'est peut etre voulus
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 8 mois #15222
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:mon script ne fonctione pas (fonction + switch)
Salut,
6ratgus écrit:
6ratgus écrit:
Quant au 'mieux', j'ai un doute.
6ratgus écrit:
L'usage de globale n'est pas à prescrire, mais à proscrire
, tant que vous pouvez vous en passer, faîtes-le.
Donc, une autre approche, sans variable globale, une fonction peut renvoyer une valeur :
[code:1]
function Read-MailBoxHost{
Write-Host \"[1]- Utilisateur a besoin d'une mailbox\"
Write-Host \"[2]- Utilisateur n'a pas besoin d'une mailbox\"
$isCreateMailBox=(Read-Host \"faites votre choix : 1 ou 2 (défaut : 1)\"«») -eq 1
if ( $isCreateMailBox )
{
Write-Host \"Vous avez choisi le choix par defaut : Utilisateur a besoin d'une mailbox\" -foregroundcolor red
}
return $isCreateMailBox
}
if ( Read-MailBoxHost )
{
$SelectedAlias=Read-UserAliasHost
Write-Host $SelectedAlias
}
[/code:1]
Ensuite évitez si possible de mélanger des appels de fonction, de ce type là en tout cas.
La fonction Read-MailBoxHost est loin d'être sans défaut, si tu veux qq chose de plus robuste, utilise System.Management.Automation.Host.ChoiceDescription
Quelques fonctions d'exemple liées à la saisie :
[code:1]
#fonction publique, nommage normée
function Clear-KeyboardBuffer {
while ($Host.UI.RawUI.KeyAvailable)
{ $null=$Host.UI.RawUI.ReadKey(\"NoEcho,IncludeKeyDown, IncludeKeyUp\"«»)}
}
#fonction interne, le nommage n'est pas normée
function YesNo{
param(
$Caption,
$Message,
[ValidateSet(\"Oui\",\"Non\"«»)]
$DefaultChoice=\"Oui\"
)
Clear-KeyboardBuffer
$Yes = New-Object System.Management.Automation.Host.ChoiceDescription \"&Oui\"
$No = New-Object System.Management.Automation.Host.ChoiceDescription \"&Non\"
$Choices = [System.Management.Automation.Host.ChoiceDescription[]]($Yes,$No)
$Host.UI.PromptForChoice($Caption,$Message,$Choices,([byte]($DefaultChoice -eq \"non\"«»)))
}
#Nommage comme un 'Mot-clé', utilisez pour le debug
function Pause ($Message=\"Pressez une touche pour continuer...\"«»)
{
Write-Host -NoNewLine $Message
$null = $Host.UI.RawUI.ReadKey(\"NoEcho,IncludeKeyDown\"«»)
Write-Host \"\"
}
[/code:1]
6ratgus écrit:
Oui, mais je pense plus à une incompréhension de l'usage et du comportement d'une fonction.tu as un problème de portée des variables.
6ratgus écrit:
Disons que l'accès à la variable dans l'appelant est désormais possible.oui c mieu
Quant au 'mieux', j'ai un doute.
6ratgus écrit:
De coder des bugs volontairement ?maintenant attention au possible bug (c peut être voulus)
L'usage de globale n'est pas à prescrire, mais à proscrire
Donc, une autre approche, sans variable globale, une fonction peut renvoyer une valeur :
[code:1]
function Read-MailBoxHost{
Write-Host \"[1]- Utilisateur a besoin d'une mailbox\"
Write-Host \"[2]- Utilisateur n'a pas besoin d'une mailbox\"
$isCreateMailBox=(Read-Host \"faites votre choix : 1 ou 2 (défaut : 1)\"«») -eq 1
if ( $isCreateMailBox )
{
Write-Host \"Vous avez choisi le choix par defaut : Utilisateur a besoin d'une mailbox\" -foregroundcolor red
}
return $isCreateMailBox
}
if ( Read-MailBoxHost )
{
$SelectedAlias=Read-UserAliasHost
Write-Host $SelectedAlias
}
[/code:1]
Ensuite évitez si possible de mélanger des appels de fonction, de ce type là en tout cas.
La fonction Read-MailBoxHost est loin d'être sans défaut, si tu veux qq chose de plus robuste, utilise System.Management.Automation.Host.ChoiceDescription
Quelques fonctions d'exemple liées à la saisie :
[code:1]
#fonction publique, nommage normée
function Clear-KeyboardBuffer {
while ($Host.UI.RawUI.KeyAvailable)
{ $null=$Host.UI.RawUI.ReadKey(\"NoEcho,IncludeKeyDown, IncludeKeyUp\"«»)}
}
#fonction interne, le nommage n'est pas normée
function YesNo{
param(
$Caption,
$Message,
[ValidateSet(\"Oui\",\"Non\"«»)]
$DefaultChoice=\"Oui\"
)
Clear-KeyboardBuffer
$Yes = New-Object System.Management.Automation.Host.ChoiceDescription \"&Oui\"
$No = New-Object System.Management.Automation.Host.ChoiceDescription \"&Non\"
$Choices = [System.Management.Automation.Host.ChoiceDescription[]]($Yes,$No)
$Host.UI.PromptForChoice($Caption,$Message,$Choices,([byte]($DefaultChoice -eq \"non\"«»)))
}
#Nommage comme un 'Mot-clé', utilisez pour le debug
function Pause ($Message=\"Pressez une touche pour continuer...\"«»)
{
Write-Host -NoNewLine $Message
$null = $Host.UI.RawUI.ReadKey(\"NoEcho,IncludeKeyDown\"«»)
Write-Host \"\"
}
[/code:1]
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.075 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- mon script ne fonctione pas (fonction + switch)