none
Benötige Hilfe bei einem Test-Connection script RRS feed

  • Frage

  • Hi Community,

    ich brauche ein Script das ab start unendlich lange oder bis zum Beenden läuft.
    Es soll mit einem Ping die Erreichbarkeit mehrerer Server prüfen.

    Bei einem Fehler soll der Servername oder die IP mit Datum und Uhrzeit in eine log Datei geschrieben werden.

    Ich bekomme es trotz vielem Googlen nicht hin.
    Bitte euch um Hilfe.

    Grüße


    Dienstag, 19. November 2019 12:50

Antworten

  • Schau mal hier, da sind massenhaft Skripte zu dem Thema. Wir helfen dir gerne bei Problemen wenn du eines der Scripte noch anpassen willst.

    Lies auch bitte mal hier.

    Grüße, Denniver


    Blog: http://www.bytecookie.de

    Powershell Code Manager: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Dienstag, 19. November 2019 13:48
    Moderator

Alle Antworten

  • Für sowas würde ich dir eher Nagios, Spiceworks, Solarwinds, Incinga you name it... ans Herz legen.

    Je nach dem, welchen Umfang an Überwachung du brauchst. Mit Nagios kann man z.B. ziemlich schnell eine Verfügbarkeitsüberwachung ausrollen.

    Außer es geht dir um die technische Herausforderung.

    Gruß

    Dienstag, 19. November 2019 13:12
  • Hi, Danke.

    Ein solches System existiert bereits und funktioniert ohne Probleme.

    Jedoch brauche ich so ein Script für händische kurze Tests.

    Dienstag, 19. November 2019 13:26
  • Schau mal hier, da sind massenhaft Skripte zu dem Thema. Wir helfen dir gerne bei Problemen wenn du eines der Scripte noch anpassen willst.

    Lies auch bitte mal hier.

    Grüße, Denniver


    Blog: http://www.bytecookie.de

    Powershell Code Manager: Link
    (u.a. Codesnippets verwalten + komplexe Scripte graphisch darstellen)

    Hilf mit und markiere hilfreiche Beiträge mit dem "Abstimmen"-Button (links) und Beiträge die eine Frage von dir beantwortet haben, als "Antwort" (unten).
    Warum das Ganze? Hier gibts die Antwort.

    Dienstag, 19. November 2019 13:48
    Moderator
  • für händische kurze Tests.

    und  "Ping <Servername>  "  reicht da nicht? ...  für händische kurze Tests?  ;-)

    ... unabhängig davon ... was hast Du denn schon probiert und was funktioniert nicht?


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''


    • Bearbeitet BOfH-666 Dienstag, 19. November 2019 13:51
    Dienstag, 19. November 2019 13:50
  • Danke für die schnellen Antworten.

    Also.

    Ich habe versucht über ein Test-Connection den Output in eine Log-Datei zu schieben, jedoch habe ich immer nur ein True oder ein False erhalten. Was ja auch logisch ist. Dazu habe ich es warum auch immer nicht hin bekommen, Datum, Uhrzeit und Servername hinzu zu fügen.

    Ich werde mal nach einer geeigneten Vorlage suchen wie es @Denniver Reining vorgeschlagen hat.

    @BOfH-666 Ein einfacher Ping reicht leider nicht aus. Ich möchte das beispielsweise auch mal nachts durch laufen lassen und dann eben in einer Log Datei sehen, welche Maschine, wann nicht erreichbar war.

    Versucht habe ich da schon einiges das ich aus den verschiedensten Google Ergebnissen die ich zusammengeworfen und Editiert habe, jedoch kam nie das raus was ich haben wollte.

    Wir werden sehen was ich finde :)
    Danke euch

    Mittwoch, 20. November 2019 09:52
  • Noch'n Tipp: Die Helfer hier helfen, weil sie Spaß dran haben und möchten auch immer gern zeigen, was sie können. Aber sie erwarten auch ein bissl Mitarbeit und Eigeninitiative. Wenn Du also einfach ein paar Zeilen Code zeigst, dann dauert es üblicherweise nicht lange, bis jemand den Code korrigiert oder verbessert oder Dir wenigstens erklärt, wie Du es besser machen kannst. 

    Bisher sieht es so aus, als würdest Du danach fragen, dass Dir jemand ein Script nach Deinen Anforderungen schreibt - das kommt hier üblicherweise gar nicht gut an.  ;-)


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    Mittwoch, 20. November 2019 12:02
  • Danke, werde ich beherzigen.

    Das war nur mein erstes richtiges Script. Das ging komplett in die Hose, deshalb habe ich nichts gepostet.
    Hier aber das heraus gesuchte Ergebnis, das einwandfrei funktioniert.

    $ServerName = Get-Content "c:\server.txt"  
      
    while($true)
    {
        foreach ($Server in $ServerName) {  
      
                if (test-Connection -ComputerName $Server -Count 4 -Quiet ) {     
              
                        } else  
                          
                            {"$(Get-Date) $Server ist nicht erreichbar"  >> C:\results.txt
                  
                        }      
                    }
    }

    aus folgendem Beitrag. https://gallery.technet.microsoft.com/Ping-Multiple-Computers-7d13a3aa

    Das wurde leicht angepasst und funktioniert so wie es soll.
    Herzlichen Dank an alle.

    Freitag, 6. Dezember 2019 10:50
  • Ui ... da werden sich Deine Netzwerk-Kollegen aber bedanken.  ;-) 

    Darf ich ein paar Änderungen vorschlagen?

    $ServerListe = Get-Content -Path C:\Sample\server.txt
    $ServerLog = 'C:\Sample\ServerLog.csv'
    $Sekunden = 10
    
    while ($true) {
        $ergebnis = foreach ($Computername in $ServerListe) {
            $TimeStamp = Get-Date
            [PSCustomobject]@{
                ComputerName = $ComputerName
                Date         = "{0:dd}.{0:MM}.{0:yyyy}" -f $TimeStamp
                Time         = "{0:HH}:{0:mm}:{0:ss}" -f $TimeStamp
                Online       = Test-Connection -ComputerName $Computername -Count 1 -Quiet
            }
        }
        $Ergebnis | Export-Csv -Path $ServerLog -NoTypeInformation -Append -Delimiter ';'
        Start-Sleep -Seconds $Sekunden
    }

    Es ist empfehlenswert die Variablennamen etwas "sprechender" zu wählen. Bei "$Server" und "$Servername" wäre ich unsicher. Wenn es eine Liste oder ein Array ist, kann man das auch so nennen. Dann liest sich der Code auch leichter. 

    Um den Netzwerkverkehr ein wenig zu reduzieren habe ich mal eine Pause zwischen den Schleifendurchläufen eingebaut. Die kannst Du mit der Variable "$Sekunden" nach Belieben justieren.

    Ich schreibe die Log-Datei im Format CSV. So kannst Du sie in Excel direkt öffnen und nach Belieben Filtern und Sortieren. 

    Schau mal, ob Du davon was verwenden magst.  ;-)


    Live long and prosper!

    (79,108,97,102|%{[char]$_})-join''

    • Bearbeitet BOfH-666 Freitag, 6. Dezember 2019 14:48
    Freitag, 6. Dezember 2019 13:36