Wohl war! Deshalb hier nochmals als vollständiges Script:
Anzupassen sind hierbei:
- Pfad zur Serverliste
- Pfad zur Logdatei
- Pfad zum tmpFolder
Code:
# Variablen
$serverliste = get-content "c:\pingtest\serverliste.txt"
$datum = get-date -format d
$zeit = get-date -format t
$user = $env:Username
$logfile = "c:\pingtest\log\test.txt"
$tmpfolder = "c:\pingtest\log"
# 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
"Servererreichbarkeit prüfen:" | out-file -filepath $logfile -encoding default -append
" " | out-file -filepath $logfile -encoding default -append
# Server prüfen
foreach ($server in $serverliste){
$address = "Address='"+$server+"'"
$ping =get-wmiobject -class Win32_PingStatus -Filter $address|select-object -Property Address,ResponseTime,StatusCode
if ($ping.statuscode -eq "0") {
$server + " OK"|out-file -filepath $logfile -encoding default -append
} else {
$server + " nicht erreichbar!"|out-file -filepath $logfile -encoding default -append
}
} Und hier noch eine Version für alle Nutzer von Tobit David, die sich eine eMail mit den fehlerhaften Server-IPs zusenden lassen wollen (unter David.zehn getestet)
Die Datei wird nur dann zum Server weitergeleitet, wenn tatsächlich ein Fehler vorliegt! Eine Netzwerkverbindung zum David-Server muss allerdings bestehen.
Anzupassen sind hierbei:
- Pfad zur Serverliste
- Pfad zum Logfile
- Pfad zum tmpfolder
- Pfad zum Serververzeichnis (errorfile)
- Empfänger eMail
- Absender eMail
Code:
# Variablen
$serverliste = get-content "c:\pingtest\serverliste.txt"
$datum = get-date -format d
$zeit = get-date -format t
$logfile = "c:\pingtest\log\test.txt"
$tmpfolder = "c:\pingtest\log"
$errorfile = "\\Server-IP\david\apps\faxware\out\api\error"
# Temp-Ordner leeren
$tmpfolder2 = $tmpfolder + "\*.*"
remove-item -path $tmpfolder2 -force
#Error-Message vorbereiten
"@@mailto Empfaenger@Empfaenger.de@@"|out-file -filepath $logfile -encoding default -append
"@@from Serverueberwachung@Absender.de@@"|out-file -filepath $logfile -encoding default -append
"@@subject Fehler! Server nicht erreichbar!@@"|out-file -filepath $logfile -encoding default -append
"@@body"|out-file -filepath $logfile -encoding default -append
"Pruefdatum " + $datum|out-file -filepath $logfile -encoding default -append
"Zeit " + $zeit|out-file -filepath $logfile -encoding default -append
"------------------------------------------------"|out-file -filepath $logfile -encoding default -append
# Server prüfen
foreach ($server in $serverliste){
$address = "Address='"+$server+"'"
$ping =get-wmiobject -class Win32_PingStatus -Filter $address|select-object -Property Address,StatusCode
if ($ping.statuscode -ne "0") {
$fehler="true"
$server + " nicht erreichbar!"|out-file -filepath $logfile -encoding default -append
}
}
# ErrorMessage abschliessen und an Server übergeben
"------------------------------------------------"|out-file -filepath $logfile -encoding default -append
"Bitte Netzwerkverbindungen pruefen!"|out-file -filepath $logfile -encoding default -append
"@@" |out-file -filepath $logfile -encoding default -append
if($fehler -eq "true"){
copy $logfile $errorfile
}