Batch-Datei PC anpingen mit Fehlermeldung
Hallo,
ich möchte gerne mit einer Batch Datei ein Rechner im Netzwerk anpingen. Wenn dieser nicht antwortet, soll ein Popup-Fenster erscheinen, dass der Rechner nicht antwortet. Wenn er antwortet, soll nichts passieren. Außerdem möchte ich die Batch Datei als Aufgabe jede Stunde ausführen lassen. Ist dies möglich? Wer kann mir weiterhelfen?
ich möchte gerne mit einer Batch Datei ein Rechner im Netzwerk anpingen. Wenn dieser nicht antwortet, soll ein Popup-Fenster erscheinen, dass der Rechner nicht antwortet. Wenn er antwortet, soll nichts passieren. Außerdem möchte ich die Batch Datei als Aufgabe jede Stunde ausführen lassen. Ist dies möglich? Wer kann mir weiterhelfen?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 550173
Url: https://administrator.de/contentid/550173
Ausgedruckt am: 14.11.2024 um 23:11 Uhr
14 Kommentare
Neuester Kommentar
Hi Ingo!
Kleiner Gedankenanstoß:
Du kannst in diesem Fall recht gut mit der ersten Antwort aus diesem Thread arbeiten: Ping errorlevel auswerten bzw. header verwerten
Hier müsstest du nur noch "Antwort" und "Antwortxy" in deinem Skript mit den entsprechenden wirklichen Antworten austauschen und eine kleine if-Abfrage reinschmeißen.
Bezüglich stündlich laufen lassen: Windows Aufgabenplanung.
Bezüglich Pop-up-Fenster: Wenn das Skript läuft, geht einmal pro Stunde kurz die cmd.exe auf, die das bat-Skript ausführt. Die könntest du dann einfach mit einem "pause" an der entsprechenden Stelle offen lassen, wenn keine Antwort zurückkommt.
Grüße.
Kleiner Gedankenanstoß:
Du kannst in diesem Fall recht gut mit der ersten Antwort aus diesem Thread arbeiten: Ping errorlevel auswerten bzw. header verwerten
Hier müsstest du nur noch "Antwort" und "Antwortxy" in deinem Skript mit den entsprechenden wirklichen Antworten austauschen und eine kleine if-Abfrage reinschmeißen.
Bezüglich stündlich laufen lassen: Windows Aufgabenplanung.
Bezüglich Pop-up-Fenster: Wenn das Skript läuft, geht einmal pro Stunde kurz die cmd.exe auf, die das bat-Skript ausführt. Die könntest du dann einfach mit einem "pause" an der entsprechenden Stelle offen lassen, wenn keine Antwort zurückkommt.
Grüße.
Moin,
darf's auch ein wenig Powershell sein?
hth
Erik
darf's auch ein wenig Powershell sein?
param(
$server = "localhost"
)
Add-Type -Assembly 'System.Windows.Forms'
while($true) {
if (-not (Test-Connection -ComputerName $server -Quiet -count 1)){
[Windows.Forms.MessageBox]::Show("$server antwortet nicht.”, "", [Windows.Forms.MessageBoxButtons]::OK, Windows.Forms.MessageBoxIcon]::Information)
}
start-sleep -s 3600
}
hth
Erik
Moin,
klar doch. Dann ändere das Skript so:
Statt "localhost" kannst Du den Namen oder die IP des gewünschten Rechners eintragen. In der Aufgabenplanung steht dann als Befehl:
und in die Zeile "Parameter" trägst Du ein
Als Trigger einmal die Stunde und gut ist.
hth
Erik
klar doch. Dann ändere das Skript so:
param(
$server = "localhost"
)
Add-Type -Assembly 'System.Windows.Forms'
if (-not (Test-Connection -ComputerName $server -Quiet -count 1)){
[Windows.Forms.MessageBox]::Show("$server antwortet nicht.”, "", [Windows.Forms.MessageBoxButtons]::OK, Windows.Forms.MessageBoxIcon]::Information)
}
Statt "localhost" kannst Du den Namen oder die IP des gewünschten Rechners eintragen. In der Aufgabenplanung steht dann als Befehl:
C:\Windows\System32\WindowsPowerShell\v1.0\powerShell.exe -ExecutionPolicy Bypass
und in die Zeile "Parameter" trägst Du ein
-command "absoluter_Pfad_zum_skript.ps1"
Als Trigger einmal die Stunde und gut ist.
hth
Erik
Moin,
sorry, mein Fehler. Die Kurzform des Dialogs funktioniert hier an der Stelle offenbar nicht. Also in lang:
Die Rauten nimmst Du weg, wenn Du es händisch starten und einmal die Stunde ausführen willst. Oder eben einmal die Stunde per Aufgabenplanung. Der Dialog ist noch ein wenig hässlich. Aber das sind Kleinigkeiten.
<edit>Ich habe ihn noch ein wenig hübscher gemacht.</edit>
hth
Erik
sorry, mein Fehler. Die Kurzform des Dialogs funktioniert hier an der Stelle offenbar nicht. Also in lang:
PARAM (
$server = "localhost"
)
Add-Type -AssemblyName System.Windows.Forms
Add-Type -AssemblyName System.Drawing
$form = New-Object System.Windows.Forms.Form
$form.Text = "$server antwortet nicht."
$form.Size = New-Object System.Drawing.Size(300,130)
$form.StartPosition = "CenterScreen"
$OKButton = New-Object System.Windows.Forms.Button
$OKButton.Location = New-Object System.Drawing.Point(110,42)
$OKButton.Size = New-Object System.Drawing.Size(76,27)
$OKButton.Text = "OK"
$OKButton.DialogResult = [System.Windows.Forms.DialogResult]::OK
$form.AcceptButton = $OKButton
$form.Controls.Add($OKButton)
# while($true) {
if (-not (Test-Connection -ComputerName $server -Quiet -count 1)) {
$form.ShowDialog()
}
# start-sleep -s 3600
#}
Die Rauten nimmst Du weg, wenn Du es händisch starten und einmal die Stunde ausführen willst. Oder eben einmal die Stunde per Aufgabenplanung. Der Dialog ist noch ein wenig hässlich. Aber das sind Kleinigkeiten.
<edit>Ich habe ihn noch ein wenig hübscher gemacht.</edit>
hth
Erik
Hallo,
ich hatte den Verdacht, dass in der Kurzform
nach dem ::OK, einfach nur eine [ gefehlt hat:
Mfg
Klaus
ich hatte den Verdacht, dass in der Kurzform
[Windows.Forms.MessageBox]::Show("$server antwortet nicht.”, "", [Windows.Forms.MessageBoxButtons]::OK, Windows.Forms.MessageBoxIcon]::Information)
nach dem ::OK, einfach nur eine [ gefehlt hat:
[Windows.Forms.MessageBox]::Show("$server antwortet nicht.”, "", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information)
Mfg
Klaus
Moin,
Jaaaaaaaaaaaaaaaaaaa! Es geht also doch. Da hatte jemand Tomaten auf den Augen und der war ich. Hier nochmal alles am Stück:
Danke für den Hinweis.
Liebe Grüße
Erik
Zitat von @NikosLykos:
Hallo,
ich hatte den Verdacht, dass in der Kurzform
nach dem ::OK, einfach nur eine [ gefehlt hat:
Hallo,
ich hatte den Verdacht, dass in der Kurzform
[Windows.Forms.MessageBox]::Show("$server antwortet nicht.”, "", [Windows.Forms.MessageBoxButtons]::OK, Windows.Forms.MessageBoxIcon]::Information)
nach dem ::OK, einfach nur eine [ gefehlt hat:
[Windows.Forms.MessageBox]::Show("$server antwortet nicht.”, "", [Windows.Forms.MessageBoxButtons]::OK, [Windows.Forms.MessageBoxIcon]::Information)
Jaaaaaaaaaaaaaaaaaaa! Es geht also doch. Da hatte jemand Tomaten auf den Augen und der war ich. Hier nochmal alles am Stück:
PARAM (
$server = "localhost"
)
Add-Type -AssemblyName System.Windows.Forms
while($true) {
if (-not (Test-Connection -ComputerName $server -Quiet -count 1)) {
[Windows.Forms.MessageBox]::Show("$server antwortet nicht.”, "", [Windows.Forms.MessageBoxButtons]::OK,[ Windows.Forms.MessageBoxIcon]::Information)
}
start-sleep -s 3600
}
Danke für den Hinweis.
Liebe Grüße
Erik