[POWERSHELL] La condition IF

Les conditions ! Un INDISPENSABLE de PowerShell.
Qui n’a jamais eu besoin d’exécuter un script suivant une condition ?
Huuuummmm……Personne.
Et cette condition est là pour nous aider.
Voici un petit script pour l’imager :
#####Définition de la variable $process.
$process = "chrome"
#####Définition de la variable $pstatut.
$pstatut = Get-Process
#####1ere Condition --> Si Chrome est présent dans les processus, la variable se met à 1, sinon, elle passe à 0.
if ($pstatut.ProcessName -eq $process )
{ $petat = "1" } else
{ $petat = "0" }
#####2eme Condition --> Si $petat est égal à 1, le texte suivant s'affiche : "Google Chrome est lancé sur le poste"
if ($petat -eq 1)
{ Write-Host "Google Chrome est lancé sur le poste" } else
{ Write-Host "Google Chrome n'est pas lancé sur le poste" }
Ici, nous voulons juste savoir si Chrome est lancé sur le poste.
Si oui, nous affichons le message :
Google Chrome est lancé sur le poste
Si non :
Google Chrome n’est pas lancé sur le poste
if ($pstatut.ProcessName -eq $process )
{ $petat = "1" } else
{ $petat = "0" }
Ici, nous disons :
Si le nom du processus (pstatut.ProcessName) est égal (-eq) chrome (process),
alors notre variable ($petat) prend la valeur 1 sinon (else), elle prend 0.
if ($petat -eq 1)
{ Write-Host "Google Chrome est lancé sur le poste" } else
{ Write-Host "Google Chrome n'est pas lancé sur le poste" }
Maintenant la suite !
Nous disons que :
Si la variable est égal à 1, alors nous faisons apparaître la phrase (Write-Host) suivante :
Google Chrome est lancé sur le poste
sinon, la phrase suivante sera affichée :
Google Chrome n’est pas lancé sur le poste

‘If’ est un mot clé du langage, pas une fonction *. Le terme est inadapté.
Pour :
if (pstatut.ProcessName -eqprocess )
{ petat = “1” }
Tu peux simplifier :petat =pstatut.ProcessName -eqprocess
Ce qui autorise par la suite l’usage d’un booléen, pas besoin de convertir le résultat ‘oui/non’ en entier :
if (petat) # donc sipetat est vrai alors la suite.
Et une dernière pour la route, le nom de variable ‘EtatProcess’ est préférable à ‘Petat’ (PetaOctet ? 🙂 )
*
code={ function F{}; if (Test-Path function:F) {“ok”}}code.ast.endblock.Statements|% {$_.gettype()}
IsPublic IsSerial Name BaseType
——– ——– —- ——–
True False FunctionDefinitionAst System.Management.Automation.Language.StatementAst
True False IfStatementAst System.Management.Automation.Language.StatementAst
Merci de ta réponse.
Effectivement, je me suis relu trop vite :-(.
Pour $petat, sur le coup, ca m’a paru logique (processetat…) mais j’aurai pu mettre quelque chose de plus explicite…pour tout le monde.