Powershell-skript

Dieses Thema im Forum "Webmaster Hilfe / Programmierer Forum" wurde erstellt von kawageri, 20.07.2009.

  1. #1 kawageri, 20.07.2009
    kawageri

    kawageri Erfahrener Benutzer

    Dabei seit:
    10.07.2008
    Beiträge:
    449
    Zustimmungen:
    0
    Ort:
    Meerbusch
    Hallo Liebe Community

    ich habe eine frage zu einem Skript. Ich habe es im Internet gefunden und zu meinen Ansprüchen hin geändert. Allerdings funktioniert es nicht so wie es soll. Normalerweise sollen alle PC, die in der .txt-file gespeichert sind abgefragt werden und dann soll Powershell sagen, ja es geht oder nein es geht nicht. Allerdings geht so wie es jetzt ist jeder PC, auch die die aus sind.

    Hier ist mein Skript:
    Code:
    # Variablen 
    $serverliste = get-content "c:\ping\serverliste.txt" 
    $datum = get-date -format d 
    $zeit = get-date -format t 
    $user = $env:Username 
    $logfile = "c:\ping\temp\servercheck.txt" 
    $tmpfolder = "c:\ping\temp" 
    
    # Temp-Ordner leeren
    $tmpfolder2 = $tmpfolder + "\*.*" 
    remove-item -path $tmpfolder2 -force 
    
    # Logfile vorbereiten 
    "=================================================" | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    " Server Ping Protokoll " | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    "=================================================" | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    "Startdatum" | out-file -filepath $logfile -encoding default -append 
    "am: " + $datum + " um: " + $zeit | out-file -filepath $logfile -encoding default -append 
    " "| out-file -filepath $logfile -encoding default -append
    "von: " + $user | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    
    "=========================================================" | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    "Anpingen der Server:" | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    
    # Server pingen 
    foreach ($server in $serverliste){ 
    ping $server -n 2 | out-null 
    $PingErgebnisServer = "$lastexitcode" 
    if ($PingErgebnisServer -eq "0") { 
    $tmp =$server + " ok" 
    $tmp | out-file -filepath $logfile -encoding default -append
    $tmp | Sort-Object $server
    
    } else { 
    $tmp = $server + " ist nicht ereichbar! " 
    $tmp | out-file -filepath $logfile -encoding default -append 
    $tmp | Sort-Object $server 
    
    } 
    } 
    weiß jemand wodran es liegt, dass jeder PC als ok angezeigt wird, obwohl dieser aus ist?
     
  2. AdMan

    schau mal hier: Windows-Wartungs-Tool. Viele Probleme lassen sich damit einfach beheben. Oftmals ist der PC dann auch schneller!
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  3. #2 xandros, 20.07.2009
    xandros

    xandros IT Consultant, Cisco Registered Partner
    Moderator

    Dabei seit:
    05.07.2007
    Beiträge:
    25.890
    Zustimmungen:
    91
    Ort:
    Umkreis Duisburg, neben Mannheim, hinter Hamburg
    Füge in deine Serverliste mal eine IP ein, die nicht exisitiert. Wird dann auch "OK" ausgegeben?
    In dem Fall schau mal auf den jeweiligen Rechnern nach, ob dort evtl. WOL für die Netzwerkkarten aktiviert ist. Dann geben die Dinger nämlich auch dann Antwort, wenn der Rechner nicht eingeschaltet ist.... (die Karten warten dann nur auf ein bestimmtes Magic-Packet, damit der Rechner gestartet wird.)
     
  4. #3 kawageri, 20.07.2009
    kawageri

    kawageri Erfahrener Benutzer

    Dabei seit:
    10.07.2008
    Beiträge:
    449
    Zustimmungen:
    0
    Ort:
    Meerbusch
    ich habe gerade eine IP mal eingefügt, die per cmd nicht anpingbar ist und die auch nicht zu gewiesen ist. Nur leider sagt mir das Skript, dass diese Adresse vorhanden ist und auch ereichbar.
     
  5. #4 xandros, 20.07.2009
    xandros

    xandros IT Consultant, Cisco Registered Partner
    Moderator

    Dabei seit:
    05.07.2007
    Beiträge:
    25.890
    Zustimmungen:
    91
    Ort:
    Umkreis Duisburg, neben Mannheim, hinter Hamburg
    Sehr merkwürdig....
    Hab das script mal eben selbst getestet

    Die 2.2 ist eine virtuelle Maschine auf dem ESX-Server, die zur Zeit gestoppt ist.
    Die 3.30 existiert zwar, ist aber nicht eingeschaltet und auch nicht am Netzwerk angeschlossen....... Hier wird also irgendwas falsch ausgewertet.
     
  6. #5 kawageri, 20.07.2009
    kawageri

    kawageri Erfahrener Benutzer

    Dabei seit:
    10.07.2008
    Beiträge:
    449
    Zustimmungen:
    0
    Ort:
    Meerbusch
    ja das is echt voll merkwürdig das skript. bei anderen soll es aber laut deren aussage funktionieren.
     
  7. #6 kawageri, 20.07.2009
    kawageri

    kawageri Erfahrener Benutzer

    Dabei seit:
    10.07.2008
    Beiträge:
    449
    Zustimmungen:
    0
    Ort:
    Meerbusch
    Das kommt als Antwort aus dem Skript:



    Ping wird ausgef￾hrt f￾r 192.168.0.240 mit 32 Bytes Daten:

    Antwort von 192.168.0.64: Zielhost nicht erreichbar.

    Antwort von 192.168.0.64: Zielhost nicht erreichbar.



    Ping-Statistik f￾r 192.168.0.240:

    Pakete: Gesendet = 2, Empfangen = 2, Verloren = 0 (0% Verlust),





    Hab es jetzt mal mit einer Adresse getestet, die noch nie im Netzwerk vergeben war. Da funktioniert es. So wie es aussieht, liegt es daran, dass die Adressen evtl schonmal vergeben wurden.
    Aber wie kann ich die Auswertung anpassen?
     
  8. #7 xandros, 20.07.2009
    xandros

    xandros IT Consultant, Cisco Registered Partner
    Moderator

    Dabei seit:
    05.07.2007
    Beiträge:
    25.890
    Zustimmungen:
    91
    Ort:
    Umkreis Duisburg, neben Mannheim, hinter Hamburg
    Hab bei mir den Fehler gefunden.
    Bei mir liefert auch meine Firewall "Zielhost nicht erreichbar" zurück, was mit einem ExitCode = "0" gleichbedeutend ist....

    Ping ist in diesem Zusammenhang also unzuverlässig auszuwerten.
    Es ist wohl sinnvoller, an dieser Stelle auf den Win32_PingStatus zurückzugreifen.
    Der liefert verschiedene Statuscodes zurück.
    0 = Erfolgreich
    11010 = Request Timed Out (keine Antwort innerhalb der erwarteten Zeit=nicht erreichbar)

    Versuch mal folgenden Code für deine ForEach-Schleife:
    Code:
    foreach ($server in $serverliste){
    $address = "Address='"+$server+"'"
    get-wmiobject -class Win32_PingStatus -Filter $address|select-object -Property Address,ResponseTime,StatusCode|out-file -filepath $logfile -encoding default -append
    }
     
  9. #8 kawageri, 20.07.2009
    kawageri

    kawageri Erfahrener Benutzer

    Dabei seit:
    10.07.2008
    Beiträge:
    449
    Zustimmungen:
    0
    Ort:
    Meerbusch
    danke für die Hilfe, aber bei mir funktioniert es nicht. Oder muss ich zusätzlich noch etwas ändern?
    Mein Skript sieht jetzt so aus:


    Code:
    # Variablen 
    $serverliste = get-content "c:\ping\serverliste.txt" 
    $datum = get-date -format d 
    $zeit = get-date -format t 
    $user = $env:Username 
    $logfile = "c:\ping\temp\servercheck.txt" 
    $tmpfolder = "c:\ping\temp" 
    
    # Temp-Ordner leeren
    $tmpfolder2 = $tmpfolder + "\*.*" 
    remove-item -path $tmpfolder2 -force 
    
    # Logfile vorbereiten 
    "=================================================" | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    " Server Ping Protokoll " | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    "=================================================" | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    "Startdatum" | out-file -filepath $logfile -encoding default -append 
    "am: " + $datum + " um: " + $zeit | out-file -filepath $logfile -encoding default -append 
    " "| out-file -filepath $logfile -encoding default -append
    "von: " + $user | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    
    "=========================================================" | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    "Anpingen der Server:" | out-file -filepath $logfile -encoding default -append 
    " " | out-file -filepath $logfile -encoding default -append 
    
    # Server pingen 
    foreach ($server in $serverliste){
    $address = "Address='"+$server+"'"
    get-wmiobject -class Win32_PingStatus -Filter $address|select-object -Property Address,ResponseTime,StatusCode|out-file -filepath $logfile -encoding default -append
    
    if ($PingErgebnisServer -eq "0") { 
    $tmp =$server + " ok" 
    $tmp | out-file -filepath $logfile -encoding default -append
    $tmp | Sort-Object $server
    
    } else { 
    $tmp = $server + " ist nicht ereichbar! " 
    $tmp | out-file -filepath $logfile -encoding default -append 
    $tmp | Sort-Object $server 
    
    } 
    }
     
  10. AdMan

    Es ist generell erstmal empfehlenswert alle ggf. veralteten oder fehlerhaften Treiber zu scannen und auf neue zu aktualisieren. Hier kannst du einen Treiber-Scanner downloaden. Das erspart oftmals viel Ärger und hilft gegen diverse Probleme.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren.
  11. #9 xandros, 20.07.2009
    xandros

    xandros IT Consultant, Cisco Registered Partner
    Moderator

    Dabei seit:
    05.07.2007
    Beiträge:
    25.890
    Zustimmungen:
    91
    Ort:
    Umkreis Duisburg, neben Mannheim, hinter Hamburg
    Den kompletten IF-ELSE-Block kannst du in die Tonne kippen.
    Die Ausgabe erfolgt direkt in das Logfile ohne Anzeige auf dem Screen.
    Wenn du auch eine Ausgabe auf dem Display haben willst, dann füge vor der Zeile
    get-wmiobject -class ...blabla
    nochmals ein
    get-wmiobject -class Win32_PingStatus -Filter $address|select-object -Property Address,ResponseTime,StatusCode
    (ohne das letzte Piping!) ein. Dann siehst du auch die Ergebnisse auf dem Bildschirm.
     
  12. #10 kawageri, 20.07.2009
    kawageri

    kawageri Erfahrener Benutzer

    Dabei seit:
    10.07.2008
    Beiträge:
    449
    Zustimmungen:
    0
    Ort:
    Meerbusch
    danke, jetzt klappts.


    Danke, danke, danke
     
Thema: Powershell-skript
Besucher kamen mit folgenden Suchen
  1. powershell ping auswerten

    ,
  2. powershell computer erreichbar

    ,
  3. script pnig mehrere rechner mit auswertung

    ,
  4. powershell prüfen ob rechner erreichbar,
  5. powershell logfile auswerten,
  6. powershell server erreichbar,
  7. script ping auswerten,
  8. powershell script ping mit zeit und datum,
  9. powershell pingabfrage,
  10. powershell prüfen ob pc erreichbar,
  11. powershell prüfen ob ein computer erreichbar ist,
  12. ip liste pingen erreichbarkeit protokollieren,
  13. script für erreichbare rechner,
  14. powershell wol script,
  15. powershell script soll loggen,
  16. powershell script server erreichbarkeit,
  17. powershell prüfen ob ping erfolgreich,
  18. powershell log auswerten,
  19. erreichbarkeit von rechnern powershell script,
  20. ping powershell pc erreichbar,
  21. ping in powershell auswerten,
  22. powershell ping erfolgreich ,
  23. powershell prüfe ob ip erreichbar,
  24. prüfen welche rechner erreichbar,
  25. powershell erreichbarkeit rechner testen
Die Seite wird geladen...

Powershell-skript - Ähnliche Themen

  1. Bild per Skript auf den Desktop legen?

    Bild per Skript auf den Desktop legen?: Ja, hay liebes Forum. Ich hab vorkurzem mal gehört das man mithilfe eines Skriptes ein Bild auf dem Desktop anzeigen kann ohne irgendwelche...
  2. Powershell

    Powershell: Ich möchte Microsoft Fix it installieren der bricht aber immer ab weil er irgendwie powershell probleme hat weis einer wie ich powershell unter...
  3. PowerShell leere Zeilen in einer Textdatei ignorieren

    PowerShell leere Zeilen in einer Textdatei ignorieren: Ich habe eine Textdatei die leere Zeilen enthält. Nun liest Powershell die Datei mit der leere Zeile. Wie kann Powershell die leeren Zeilen in der...
  4. Skripten lernen/Skripten leicht gemacht

    Skripten lernen/Skripten leicht gemacht: hallo, ich würde gerne zum zeit vertreib Skripten lernen...aber da ich nicht weiß wie man anfangen soll oder mit welchem programm man das...
  5. Skripte kopieren legal?

    Skripte kopieren legal?: Ist es legal die Skripte anderer Websites zu kopieren und sie in seine eigene einzufügen? gruß alex