none
Faire ralentir Execution PowerShell RRS feed

  • Question

  • Bonjour,

    J'ai ce script qui permet de faire des pings sur des serveurs à partir d'un fichier. (J'ai pris le script depuis le technet)

    https://gallery.technet.microsoft.com/scriptcenter/Ping-servers-in-TXT-file-26d12fa4

    $servers = Get-Content C:\serverlist.txt
    $collection = $()
    foreach ($server in $servers)
    {
        $status = @{ "ServerName" = $server; "TimeStamp" = (Get-Date -f s) }
        if (Test-Connection $server -Count 1 -ea 0 -Quiet)
        { 
            $status["Results"] = "Up"
        } 
        else 
        { 
            $status["Results"] = "Down" 
        }
        New-Object -TypeName PSObject -Property $status -OutVariable serverStatus
        $collection += $serverStatus
    
    }
    $collection | Export-Csv C:\ServerStatus.csv -NoTypeInformation

    Mon problème que le script s'exécute trop rapidement et que le résutat est faux. Il me met tout mes serveurs Down alors que cela n'est pas vrai. 

    Comment faire. 

    Merci d'avance 

    mardi 29 octobre 2019 10:30

Toutes les réponses

  • Bonjour,

    Je crois comprendre dans votre demande que le test de connexion effectué génère des faux positifs (commande Test-Connection).

    Cela est certainement dû à une résolution de noms trop tardive, associée à un test de connexion (ping) unique (-Count 1).

    Dans ce cas, je vous conseille d'augmenter la valeur de Count (passez à 3 ou 4).


    Cordialement,

    Sylvain (MCP, MCTS Windows Server 2008 R2 Server Virtualization, MCTS Exchange 2010)

    WWW : http://snsv.consulting | Blog : http://sylvaincoudeville.fr

    "Aléatoire" et "Mystérieux" sont des qualificatifs inventés par l'Homme pour éviter de dire qu'il n'a pas trouvé la root cause du problème...

    mardi 29 octobre 2019 11:07
  • Merci pour votre réponse. J'ai essayé de moduler se paramètre avec plein de valeur différente et cela ne fonctionne toujours pas 
    mardi 29 octobre 2019 13:04
  • Avez-vous essayé pour commencer, de tester la portion de code qui fait le test, pour voir si elle fonctionne ?

        if (Test-Connection "unserveurdetest" -Count 1 -ea 0 -Quiet)
        { 
            $status["Results"] = "Up"
        } 
        else 
        { 
            $status["Results"] = "Down" 
        }

    En effet, si la commande Test-Connection ne fonctionne pas dans votre environnement (pour quelque raison que se soit), vous allez chercher loin inutilement.

    De la même manière, avez-vous vérifié que $server est bien peuplé avec le nom (ou l'IP) du serveur à tester avant l'exécution de la commande Test-Connection?


    Cordialement,

    Sylvain (MCP, MCTS Windows Server 2008 R2 Server Virtualization, MCTS Exchange 2010)

    WWW : http://snsv.consulting | Blog : http://sylvaincoudeville.fr

    "Aléatoire" et "Mystérieux" sont des qualificatifs inventés par l'Homme pour éviter de dire qu'il n'a pas trouvé la root cause du problème...

    mardi 29 octobre 2019 13:08
  • Oui pour les 2 tests. 

    Et quand je mets qu'un seul ou 2 nom (Nom qui ping qui est Ok ) dans mon fichier cela fonctionne dès que j'en ai beaucoup ça fonctionne pas 


    mardi 29 octobre 2019 13:17
  • Dans ce cas, il est fort probable qu'il s'agisse d'un problème réseau et non de script.

    Essayez de simuler les tests en enchaînant les Test-Connection xxxxx pour voir ce qui se passe en "conditions réelles".

    Sinon, vous pouvez "ralentir" l'exécution du script en ajoutant un Start-Sleep pour faire une pause à la fin de chaque occurrence de Foreach


    Cordialement,

    Sylvain (MCP, MCTS Windows Server 2008 R2 Server Virtualization, MCTS Exchange 2010)

    WWW : http://snsv.consulting | Blog : http://sylvaincoudeville.fr

    "Aléatoire" et "Mystérieux" sont des qualificatifs inventés par l'Homme pour éviter de dire qu'il n'a pas trouvé la root cause du problème...

    mardi 29 octobre 2019 14:04