Question
mon script ne fonctione pas (fonction + switch)
- Laurent Dardenne
- Hors Ligne
- Modérateur
-
Réduire
Plus d'informations
- Messages : 6311
- Remerciements reçus 68
il y a 12 ans 8 mois #15223
par Laurent Dardenne
Tutoriels PowerShell
Réponse de Laurent Dardenne sur le sujet Re:mon script ne fonctione pas (fonction + switch)
Voici un cas où l'usage d'une variable globale est nécessaire, le contexte est un setup constitué de nombreuses demandes et dans chaque fonction en erreur on peut demander l'arrêt du script principal :
[code:1]
$sb={
$Yes=0
$No=1
$Global:Choice=$No
function YesNo{
#Default choice = No
param($Caption, $Message)
$Yes = New-Object System.Management.Automation.Host.ChoiceDescription \"&Yes\"
$No = New-Object System.Management.Automation.Host.ChoiceDescription \"&No\"
$Choices = [System.Management.Automation.Host.ChoiceDescription[]]($Yes,$No)
$Global:Choice=$Host.UI.PromptForChoice($Caption,$Message,$Choices,1)
$Global:Choice
}
$sbAbort= {(YesNo -M \"Voulez-vous arrêter ce script ?\"«») -eq $Yes}
function Read-AccountInformationHost {
if ($Global:Choice -eq $Yes) {return}
#Nom et password du compte de service à utiliser
do {
$Credential = $host.ui.PromptForCredential(\"Mon compte \", \"Entrez un nom de compte et un mot de passe.\", \"\", \"AccountName\",\"Default\",\"AlwaysPrompt\"«»)
}
until (($Credential -ne $null) -or (&$sbAbort) )
if ($Global:Choice -eq $Yes) {return}
}
Read-AccountInformationHost
if ($Global:Choice -eq $Yes)
{Write-host \"Abandon\" }
else
{Write-host \"Suite du setup\" }
}
&$sb
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 21/06/13 20:27
[code:1]
$sb={
$Yes=0
$No=1
$Global:Choice=$No
function YesNo{
#Default choice = No
param($Caption, $Message)
$Yes = New-Object System.Management.Automation.Host.ChoiceDescription \"&Yes\"
$No = New-Object System.Management.Automation.Host.ChoiceDescription \"&No\"
$Choices = [System.Management.Automation.Host.ChoiceDescription[]]($Yes,$No)
$Global:Choice=$Host.UI.PromptForChoice($Caption,$Message,$Choices,1)
$Global:Choice
}
$sbAbort= {(YesNo -M \"Voulez-vous arrêter ce script ?\"«») -eq $Yes}
function Read-AccountInformationHost {
if ($Global:Choice -eq $Yes) {return}
#Nom et password du compte de service à utiliser
do {
$Credential = $host.ui.PromptForCredential(\"Mon compte \", \"Entrez un nom de compte et un mot de passe.\", \"\", \"AccountName\",\"Default\",\"AlwaysPrompt\"«»)
}
until (($Credential -ne $null) -or (&$sbAbort) )
if ($Global:Choice -eq $Yes) {return}
}
Read-AccountInformationHost
if ($Global:Choice -eq $Yes)
{Write-host \"Abandon\" }
else
{Write-host \"Suite du setup\" }
}
&$sb
[/code:1]<br><br>Message édité par: Laurent Dardenne, à: 21/06/13 20:27
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.053 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- mon script ne fonctione pas (fonction + switch)