Abfragen, ob ein Schedule Task schon existiert
Hallo,
Ich möchte viele Server abfragen, ob sie schon einen schedule Task haben, der xmlreport heißt...
Außerdem soll falls es einen fehler gibt, also dieser Task auf dem vorhanden Server nicht ist der Schedule Task erstellt werden. Ich möchte nun alle Server in einer .log aufgelistet bekommen, auf denen der Task nicht vorhanden war.
Folgenden Code habe ich schon, aber wie ich noch weiter machen muss weiß ich nicht... :
In Server.txt stehen alle Server drinnen (ca. 200-300)
For /f %%a in (Server.txt) DO (schtasks /query /S %%a | echo %%a if %errorlevel% = 1>> Tasks.log)
Vielen Dank schon mal für jede Hilfe!
Nemofly
Ich möchte viele Server abfragen, ob sie schon einen schedule Task haben, der xmlreport heißt...
Außerdem soll falls es einen fehler gibt, also dieser Task auf dem vorhanden Server nicht ist der Schedule Task erstellt werden. Ich möchte nun alle Server in einer .log aufgelistet bekommen, auf denen der Task nicht vorhanden war.
Folgenden Code habe ich schon, aber wie ich noch weiter machen muss weiß ich nicht... :
In Server.txt stehen alle Server drinnen (ca. 200-300)
For /f %%a in (Server.txt) DO (schtasks /query /S %%a | echo %%a if %errorlevel% = 1>> Tasks.log)
Vielen Dank schon mal für jede Hilfe!
Nemofly
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 201108
Url: https://administrator.de/contentid/201108
Ausgedruckt am: 26.11.2024 um 11:11 Uhr
23 Kommentare
Neuester Kommentar
@echo off & setlocal ENABLEDELAYEDEXPANSION
set TASKNAME=MyTask
set TASKLOG=Tasks.log
for /f "tokens=*" %%a in (Server.txt) DO @(
REM Test if Server is online
ping -n 1 -w 200 %%a | find /c "TTL=" >nul
if !ERRORLEVEL! == 1 (
echo Server '%%a' ist offline >>!TASKLOG!
) else (
schtasks /query /S %%a /TN "!TASKNAME!"
if !errorlevel! == 1 (
echo "Task ist auf Server %%a nicht vorhanden" >>!TASKLOG!
REM HIER DEIN SCHTASKS CREATE BEFEHL EINTRAGEN
)
)
)
Den Namen des Tasks und den Lognamen noch ergänzen (Zeile 2 und 3)
Grüße Uwe
Da ist so einiges Falsch
- du hast das "@" vor dem echo off & setlocal ENABLEDELAYEDEXPANSION vergessen !
- und in der Schleife solltest du die Errorlevel-Variable mit Ausrufezeichen einrahmen !errorlevel! nicht mit %
- und die if-Abfrage in der Schleife hängt ohne & direkt an dem vorigen Befehl.
- du hast das "@" vor dem echo off & setlocal ENABLEDELAYEDEXPANSION vergessen !
- und in der Schleife solltest du die Errorlevel-Variable mit Ausrufezeichen einrahmen !errorlevel! nicht mit %
- und die if-Abfrage in der Schleife hängt ohne & direkt an dem vorigen Befehl.
del C:\Fehler.log
FOR /f %%a in (Server.txt) DO (xcopy /y "D:\Tools\satin\*.*" "\\%%a\c$\hp\hpdiags\" || echo %%a >> Fehler.log)
del C:\Tasks.log
@echo off & setlocal ENABLEDELAYEDEXPANSION
for /f "tokens=*" %%a in (Server.txt) DO (schtasks /query /S %%a /TN "xmlreport" || echo "Task ist auf Server %%a nicht vorhanden" >>Tasks.log)
Hi,
Aua das @ vor (REM muss abernicht dahin oder ?
MfG Exzellius
Aua das @ vor (REM muss abernicht dahin oder ?
Ich weiß du gibst dir sehr viel mühe danke dir, es wäre sehr nett, wenn wir das hinbekommen könnten ;)
MfG Exzellius
OK Dir fehlt am Ende eine Klammer ")".
Eine Korrektur des Ping Befehls habe ich noch mit reingenommen falls der PC via IPv6 pingt:
Hier die korrigierte Schleife:
eventuell musst du für das Remote Abfragen via schtasks noch Benutzername und Kennwort mitgeben...
Eine Korrektur des Ping Befehls habe ich noch mit reingenommen falls der PC via IPv6 pingt:
Hier die korrigierte Schleife:
for /f "tokens=*" %%a in (Server.txt) DO @(
ping -n 1 -w 200 %%a | find /c "Zeit<" >nul
if !ERRORLEVEL! == 1 (
echo Server '%%a' ist offline >>!TASKLOG!
) else (
schtasks /query /S \\%%a /TN "!TASKNAME!"
if !errorlevel! == 1 (
echo "Task ist auf Server %%a nicht vorhanden" >>!TASKLOG!
)
)
)
schtasks /query /S \\%%a /U USERNAME /P KENNWORT /TN "!TASKNAME!"
Jetzt wirds langsam nervig...
Bei Windows Server 2008 mach folgendes:
Start -> Ausführen -> taskschd.msc eingeben
Jetzt hast du links die Aufgaben Struktur, rechts siehst du die Tasks im jeweiligen Ordner.
Aufgabenplanungsbibliothek ist ROOT. Wenn der Task jetzt rechts im Fenster zu sehen ist, brauchst du keinen Pfad übergeben da schtasks den so findet.
Welche Windows Version hat dein System von wo aus du abfragst ? Das scheint eine ältere schtasks Version zu sein...
Bei Windows Server 2008 mach folgendes:
Start -> Ausführen -> taskschd.msc eingeben
Jetzt hast du links die Aufgaben Struktur, rechts siehst du die Tasks im jeweiligen Ordner.
Aufgabenplanungsbibliothek ist ROOT. Wenn der Task jetzt rechts im Fenster zu sehen ist, brauchst du keinen Pfad übergeben da schtasks den so findet.
Welche Windows Version hat dein System von wo aus du abfragst ? Das scheint eine ältere schtasks Version zu sein...