none
Pingabfrage RRS feed

  • Frage

  • Hallo zusammen,

    zuerst gesagt ich bin absoluter Neuling im Programmieren.

    Folgendes soll das Programm erreichen:

    Pingabfrage für 60 Sekunden, danach soll am besten die Ping Statistik (also durchschnittlicher Ping) ausgelesen werden und bei ping < 40 ms soll ein Fenster aufpoppen mit Ping okay, ansonsten ein Fenster mit Ping nicht okay und der Möglichkeit das Programm zu wiederholen.

    Hier mein bisheriger Code:

    $a1 = new-object -comobject wscript.shell
    $google = "www.google.de"
    $pingabfrage = Get-WmiObject -Class win32_pingstatus -Filter "Address = '$google'"
    if ($pingabfrage.responsetime -lt 40)
    {
    $ok = $a1.popup(“Alles in Ordnung“,0,”Test erfolgreich, Ping okay”,0)
    }
    else
    {
    $nok = $a1.popup(“Wollen Sie den Test wiederholen?“,0,”Ping nicht okay”,4)
    }

    Hier wird jetzt halt nur der Ping von einer Abfrage geprüft, wie bekomm ich die 60 Abfragen hin bzw. wie kann ich den Durchschnittsping bei z.b. ping -n 60 auslesen? Nächste Sache wäre wie bekomm ich beim else Fall es hin, das er wenn ich beim Fenster auf "Wiederholen" klicke das Programm noch einmal startet?

    Bin für jede Verbesserung und Tipp dankbar!



    • Bearbeitet Norm B2 Samstag, 22. Dezember 2012 19:48 codeblock
    Samstag, 22. Dezember 2012 19:33

Antworten

  • Hallo,

    so sollte es funktionieren:

    [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") function Ping { param ( [String]$Address ) $averageResponseTime = (Test-Connection -ComputerName $Address -Count 60 | Measure-Object -Property ResponseTime -Average).Average IF ( $averageResponseTime -lt 40 ) { [System.Windows.Forms.MessageBox]::Show("Alles in Ordung`nResponse Time: $averageResponseTime", "Ping okey", [System.Windows.Forms.MessageBoxButtons]::Ok,"Information") } else { $Popup = [System.Windows.Forms.MessageBox]::Show("Wollen Sie den Test wiederholen`nResponse Time: $averageResponseTime", "Ping nicht okay", [System.Windows.Forms.MessageBoxButtons]::YesNo,"Warning") IF ( $Popup -eq "Yes" ) { ping -Address $Address } } } ping -Address www.google.de

    #


    MfG




    • Als Antwort vorgeschlagen Alex Pitulice Donnerstag, 3. Januar 2013 12:55
    • Bearbeitet Schlieng Donnerstag, 3. Januar 2013 13:18
    • Als Antwort markiert Norm B2 Donnerstag, 3. Januar 2013 21:43
    Donnerstag, 27. Dezember 2012 08:08

Alle Antworten

  • Erste Hilfe sollte das Folgende geben. Dein zweites Problem kannst Du unter anderem über Funktionen und lösen (Get-Help about_functions)

    $shell = New-Object -ComObject wscript.shell
    $address = "www.google.de"
    
    $pingResult = Test-Connection -ComputerName $address
    $averageResponseTime = ($pingResult | Measure-Object -Property ResponseTime -Average).Average
    
    if ($averageResponseTime)
    {
    	$ok = $shell.Popup('Alles in Ordnung',0,'Test erfolgreich, Ping okay',0)
    }
    else
    {
    	$nok = $shell.Popup('Wollen Sie den Test wiederholen?',0,'Ping nicht okay',4)
    }


    -Raimund

    Samstag, 22. Dezember 2012 21:44
  • Danke erstmal. Mein Code sieht jetzt so aus:

    $shell = new-object -comobject wscript.shell
    $address = "www.google.de"
    
    $pingresult = Test-Connection -ComputerName $address -Count 60
    $averageResponseTime = ($pingResult | Measure-Object -Property ResponseTime -Average).Average
    if ($averageResponseTime -lt 40)
    {
    $ok = $shell.popup(“Alles in Ordnung“,0,”Test erfolgreich, Ping okay”,0)
    }
    else
    {
    $nok = $shell.popup(“Wollen Sie den Test wiederholen?“,0,”Ping nicht okay”,4)
    }
    
    Mit den Funktionen komme ich nicht wirklich weiter

    Samstag, 22. Dezember 2012 23:02
  • Hallo,

    so sollte es funktionieren:

    [System.Reflection.Assembly]::LoadWithPartialName("System.Windows.Forms") function Ping { param ( [String]$Address ) $averageResponseTime = (Test-Connection -ComputerName $Address -Count 60 | Measure-Object -Property ResponseTime -Average).Average IF ( $averageResponseTime -lt 40 ) { [System.Windows.Forms.MessageBox]::Show("Alles in Ordung`nResponse Time: $averageResponseTime", "Ping okey", [System.Windows.Forms.MessageBoxButtons]::Ok,"Information") } else { $Popup = [System.Windows.Forms.MessageBox]::Show("Wollen Sie den Test wiederholen`nResponse Time: $averageResponseTime", "Ping nicht okay", [System.Windows.Forms.MessageBoxButtons]::YesNo,"Warning") IF ( $Popup -eq "Yes" ) { ping -Address $Address } } } ping -Address www.google.de

    #


    MfG




    • Als Antwort vorgeschlagen Alex Pitulice Donnerstag, 3. Januar 2013 12:55
    • Bearbeitet Schlieng Donnerstag, 3. Januar 2013 13:18
    • Als Antwort markiert Norm B2 Donnerstag, 3. Januar 2013 21:43
    Donnerstag, 27. Dezember 2012 08:08
  • ah ok, danke für eure Hilfe und Lösungsansätze :)
    Donnerstag, 3. Januar 2013 21:43
  •  
    wenn die Thematik abgeklärt ist, markiere bitte die hilfreichen Beiträge "als Antwort".

    @Alex Pitulice

    Sind die Beiträge nun Hilfreich oder sind sie die Antwort?
    Bitte die Begriffe nicht synonym gebrauchen, da Sie hier im Forum zwei völlig unterschiedliche Dinge sind! ;-)


    Please click “Mark as Answer” if my post answers your question and click “Vote As Helpful” if my Post helps you.
    Bitte markiere hilfreiche Beiträge von mir als “Als Hilfreich bewerten” und Beiträge die deine Frage ganz oder teilweise beantwortet haben als “Als Antwort markieren”.
    My PowerShell Blog http://www.admin-source.info
    [string](0..21|%{[char][int]([int]("{0:d}" -f 0x28)+('755964655967-86965747271757624-8796158066061').substring(($_*2),2))})-replace' '
    German ? Come to German PowerShell Forum!

    Freitag, 4. Januar 2013 05:56