Question Boucle Ping

Plus d'informations
il y a 3 ans 7 mois - il y a 3 ans 7 mois #30007 par brunod
Boucle Ping a été créé par brunod
Bonjour,

Merci par avance pour votre aide, mais je n'arrive pas à finaliser une boucle assez simple...
J'ai des serveurs de fichiers que je voudrais pinguer et lancer une exécution si le ping repond.
Ces serveurs de fichier se finissent par le chiffres 01 02 03 04 ...etc

Ma boucle teste tous les serveurs entre 01 et 10.
Si ping OK, alors exécute alors un code.
Si Ping KO, alors écrit "Ping KO"

La ou je bloque c'est, si tous les Ping sont KO, je voudrais pouvoir écrire "Quel est le nom du serveur de fichier ?" et le mettre en variable pour l’exécution du même code que PING OK.

Voila c'est que j'ai pu déjà faire :
$tri = ($env:computername).substring(0,3)
$computername = $FNP
$FNP = $tri+"CENTSQL0"

for ($i = 1; $i -lt 10; $i++) {
$ping = Test-Connection -ComputerName ($FNP+$i) -count 1 -quiet
if($ping -eq "$true")
{$computername=$FNP+$i
write-host -ForegroundColor Green "Ping $computername OK"}
elseif($ping -eq "$false")
{Write-Host -ForegroundColor Red "Ping $computername KO"}

}


En vous remerciant et vous souhaitant une bonne journée.
Dernière édition: il y a 3 ans 7 mois par brunod.

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 ans 7 mois #30009 par Laurent Dardenne
Réponse de Laurent Dardenne sur le sujet Boucle Ping
Salut
"si tous les Ping sont KO, je voudrais pouvoir écrire "Quel est le nom du serveur de fichier ?" "
Il te faut mémoriser l'information. Reste à savoir si tu comptes avoir en résultat le nom de la machine et son état.

"et le mettre en variable pour l’exécution du même code que PING OK."
Pas compris.

En passant ceci est à éviter :
if($ping -eq "$true")
A remplacer par
if (Test-Connection -ComputerName ($FNP+$i) -count 1 -quiet)
{fait qq chose}
else
{fait autre chose}

Une solution pour tester une collection de 'résultat' :
 $resultat=@($true,$false)
[array]::TrueForAll($Resultat,[System.Predicate[boolean]]{param($Ping) $Ping -eq $true})
#False

#Valeur identique pour tous les éléments
 $resultat=@($true,$true)
[array]::TrueForAll($Resultat,[System.Predicate[boolean]]{param($Ping) $Ping -eq $true})
#True

Tutoriels PowerShell

Connexion ou Créer un compte pour participer à la conversation.

Plus d'informations
il y a 3 ans 6 mois #30071 par BRAVO
Réponse de BRAVO sur le sujet Boucle Ping
Bonjour,

Pour cette partie si cela peut aider :

je voudrais pouvoir écrire "Quel est le nom du serveur de fichier ?" et le mettre en variable pour l’exécution du même code que PING OK.


Tu peux ajouter ceci dans cette partie de ta boucle :
elseif($ping -eq "$false")
{Write-Host -ForegroundColor Red "Ping $computername KO"}
$reponse=Read-Host ("Quel est le nom du serveur de fichier ?")
}

Dans ce cas, ta réponse sera stockée dans $reponse

Mais si je comprend bien tu veux ajouter une condition à part entière de celle du dessus c'est ça?

Connexion ou Créer un compte pour participer à la conversation.

Temps de génération de la page : 0.068 secondes
Propulsé par Kunena