Question
[résolu]condition if
- lege
- Auteur du sujet
- Hors Ligne
- Membre premium
- Messages : 80
- Remerciements reçus 0
à partir d'un script A, j’appelle le script B qui doit récupérer deux valeurs, les traiter dans un test et ensuite les appliquer les valeurs.
La valeur pour le script A peut être \"1\", \"0\" ou \"nul\"
script A
[code:1]
c:\users\toto\scriptB -$master \"1\" -serveur \"0\"
[/code:1]
script B
[code:1]
if($master -eq \"1\"«»)
then envoie la valeur \"1\" vers $master
elseif($master -eq \"0\"«»)
then envoie la valeur \"0\" vers $master
else
then envoie la valeur \"0\" vers $master
if($serveur -eq \"1\"«»)
then envoie la valeur \"1\" vers $serveur
elseif($serveur -eq \"0\"«»)
then envoie la valeur \"0\" vers $serveur
else
thern envoie la valeur \"0\" vers $serveur
$master = \"la valeur récupéré après le test\"
$serveur = \"la valeur récupéré après le test\"
#à quoi servent les valeurs que je récupère (la variable $windows7 sert pour une utilisation futur)
if((($master -eq \"1\"«») -or ($master -eq \"0\"«») -and ($windows7 -eq \"0\" -and $serveur -eq \"1\"«»)))
{
#Commande powershell désactiver le compte administrateur
$user = [adsi]\"WinNT://$env:computername/administrateur\"
$user.UserFlags.value = $user.UserFlags.value -bor 0x0002
$user.CommitChanges()
}
[/code:1]
Je ne sais pas comment faire pour récupérer les valeurs et les envoyer dans les différentes variables
merci pour votre aide
Message édité par: arsoul, à: 19/12/13 10:33<br><br>Message édité par: arsoul, à: 23/12/13 10:01
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6300
- Remerciements reçus 68
utilise le mot clé Param
[code:1]help about_Functions_Advanced_Parameters[/code:1]
Un exemple :
[code:1]
#scriptb
Param( $master,$Serveur )
if($master -eq \"1\"«»)
...
[/code:1]
D'après ton explication, des paramètres de type Switch seraient plus appropriés, car tu n'utilises pas la valeur $null.
[code:1]
#scriptb
Param(
[switch] $Master,
[Switch] $Serveur
)
if($master) #présent sur la ligne de commande
else #absent sur la ligne de commande
...
[/code:1]
Appels possibles:
[code:1]
c:\users\toto\scriptB -master -serveur
c:\users\toto\scriptB
c:\users\toto\scriptB -serveur
c:\users\toto\scriptB -master
[/code:1]
Tu devrais d'acheter un livre ou lire cette doc , car tu perds beaucoup de temps sur des principes de bases
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- lege
- Auteur du sujet
- Hors Ligne
- Membre premium
- Messages : 80
- Remerciements reçus 0
effectivement, je pose beaucoup de question sur des principes de bases car je ne l'ai ai pas
Si tu peux développer ton exemple, je ne comprend pas vraiment comment il faut faire...<br><br>Message édité par: arsoul, à: 19/12/13 12:43
Connexion ou Créer un compte pour participer à la conversation.
- Philippe
- Hors Ligne
- Modérateur
- Messages : 1778
- Remerciements reçus 21
le pauvre a eu la mauvaise idée de me dire qu'il pouvais faire ce que je demander en powershell, alors qu'il n'avais pas encore eu de formation sur powershell !
il a galère quelques mois, et je pouvais pas l'aider car je connaissais pas encore powershell
depuis il est devenu un expert powershell que les entreprises s'arrache (de ce qu'il m'a dis cette été !)
ca fait plaisir de voir qu'il a eu raison de s'obstiner sur un langage qu'il ne connaissais pas
je te souhaite la même chose arsoul
prend le temps de lire les tutos dispo sur internet, Laurent en a faire de bien (voir tres bien ) pour les débutants, regarde dans ça signature
tu en trouve aussi ici sur ce site dans : articles et tutoriaux
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6300
- Remerciements reçus 68
C'est ce qu'on constate, et de faire les choses à l'envers donne rarement de bon résultatsEffectivement, je pose beaucoup de question sur des principes de bases car je ne l'ai ai pas.
Il est tout de même préférable d'apprendre les bases avant de vouloir faire.Ton stage doit te permettre cela. De les étudier qq jours te permettra de progresser plus rapidement, il faut accepter de perdre du temps pour en gagner.
arsoul écrit:
Pour le moment j'en ai.si tu as bien entendu du temps
[code:1]
#ScriptB
Param(
[switch] $Master,
[Switch] $Serveur,
[Switch] $WindowsSeven
)
Write-Debug \"Master=$Master `t Serveur=$Serveur `t WindowsSeven=$WindowsSeven\"
if(-not $windows7 -and $Serveur)
{
Write-Debug \"Désactive le compte administrateur\"
return # A supprimer
$user = [adsi]\"WinNT://$env:computername/administrateur\"
$user.UserFlags.value = $user.UserFlags.value -bor 0x0002
$user.CommitChanges()
}
else
{ Write-Debug \"Le compte administrateur n'est pas désactivé\" }
[/code:1]
L'appel :
[code:1]
cd C:\temp
$Debugpreference
$DebugPreference='continue'
.\ScriptB.ps1
.\ScriptB.ps1 -WindowsSeven
.\ScriptB.ps1 -WindowsSeven -Serveur
$DebugPreference='SilentlyContinue'
[/code:1]
Une fois ta gestion de paramètre validée(je ne suis pas certains d'avoir compris ce que tu veux faire), supprime la ligne contenant le mot-clé return
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Laurent Dardenne
- Hors Ligne
- Modérateur
- Messages : 6300
- Remerciements reçus 68
Le prérequis à leur lecture est de connaitre les bases justement, ce n'est pas tout à fait débutant.Laurent en a fait de bien (voir très bien ) pour les débutants
Ensuite le terme 'débutant' est relatif, celui qui a déjà codé a moins à apprendre que celui qui n'a jamais codé. Certains ne connaissent pas la notion d'objet, ni WMI ou la notion d'événements, d'autres n'ont jamais pratiqué de ligne de commande ou ne savent pas ce qu'est une fonction...
Combien d'utilisateur de PS peuvent expliquer toutes les informations contenu dans l'aide d'un paramètre d'un cmdlet ?
Et ici il n'y a pas encore de code <br><br>Message édité par: Laurent Dardenne, à: 19/12/13 13:08-Exclude <String[]>
Omet les éléments spécifiés. La valeur de ce paramètre qualifie le paramètre Path. Entrez un élément ou un
modèle de chemin d'accès, tel que «*.txt». Les caractères génériques sont autorisés.
Obligatoire ? false
Position ? named
Valeur par défaut
Accepter l'entrée de pipeline ? false
Accepter les caractères génériques ? true
Tutoriels PowerShell
Connexion ou Créer un compte pour participer à la conversation.
- Vous êtes ici :
- Accueil
- forum
- PowerShell
- Entraide pour les débutants
- [résolu]condition if