Batch ausführen in Task Scheduler Windows Server 2008 funktioniert nur teilweise
Landstreicher (Level 1) - Jetzt verbinden
26.08.2011, aktualisiert 11:27 Uhr, 6814 Aufrufe, 7 Kommentare
Hallo zusammen,
ich habe eine Batch gebastelt, welche mir die CPU auslastung alle 10 min. in ein File schreiben soll und diese dann per pscp auf einen Unixserver schieben soll.
Soweit funktioniert dies auch. Lasse ich dies aber über den Task Scheduler von Windows 2008 Server laufen, liefert er mir lediglich noch den Rechnernamen und das Datum.
der Befehl : FOR /F "tokens=1,2 skip=1 delims= " %%i IN ('"WMIC CPU GET LoadPercentage, DeviceID"') DO (echo Prozessor %%i und %%j %%% Auslastung) >>D:\Scripts\cpu2.txt
scheint hier nicht mehr zu funktionieren.
kann mir jemand sagen was hier mein Problem verursacht ?
Hier mal meine Batch:
Gruß ein Landstreicher
ich habe eine Batch gebastelt, welche mir die CPU auslastung alle 10 min. in ein File schreiben soll und diese dann per pscp auf einen Unixserver schieben soll.
Soweit funktioniert dies auch. Lasse ich dies aber über den Task Scheduler von Windows 2008 Server laufen, liefert er mir lediglich noch den Rechnernamen und das Datum.
der Befehl : FOR /F "tokens=1,2 skip=1 delims= " %%i IN ('"WMIC CPU GET LoadPercentage, DeviceID"') DO (echo Prozessor %%i und %%j %%% Auslastung) >>D:\Scripts\cpu2.txt
scheint hier nicht mehr zu funktionieren.
kann mir jemand sagen was hier mein Problem verursacht ?
Hier mal meine Batch:
@echo off
title CPU - Monitor (Werte in Prozent)
REM Datum umbauen
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set Cyear=%%a%%b%%c
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set year=%%c
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set mon=%%b
FOR /F "tokens=1,2,3,4 delims=/. " %%a in ('date/T') do set day=%%a
echo Aktuelles Jahr = %year%
echo heute ist der : %mon%/%day%/%year%
REM hier gehts los
echo lese CPU-Werte ....
if exist D:\Scripts\cpu2.txt del D:\Scripts\cpu2.txt
ping -n 2 127.0.0.1 >nul
FOR /F "tokens=1,2 skip=1 delims= " %%i IN ('"WMIC CPU GET LoadPercentage, DeviceID"') DO (
echo Prozessor %%i und %%j %%% Auslastung
) >>D:\Scripts\cpu2.txt
ping -n 4 127.0.0.1 >nul
echo;
echo schreibe CPU-Werte ....
set string=CPU0
set string2=CPU1
set ordner=D:\Scripts\
set datei=cpu2.txt
set ausgabe=D:\Scripts\CPU_Mittelwert1_%computername%.txt
set ausgabe2=D:\Scripts\CPU_Mittelwert2_%computername%.txt
FOR /F "tokens=1,2,3,4,5 delims= " %%a in ('findstr %string% %ordner%%datei%') DO set a=%%d
FOR /F "tokens=1,2,3,4,5 delims= " %%a in ('findstr %string2% %ordner%%datei%') DO set b=%%d
echo;
echo;
echo CPU1=%a%
echo CPU2=%b%
echo;
echo rechne ...
echo;
set /a mittelwert=(%a%+%b%)/2
echo;
echo schreibe Wert in Datei ....
echo %computername% %mon%/%day%/%year% %TIME:~0,5% %mittelwert% >>D:\Scripts\CPU_%computername%_%year%%mon%%day%
echo versenden der Datei
call D:\Scripts\pscp.exe -pw -------- D:\Scripts\CPU_%computername%_%year%%mon%%day% ------@------------:/home/perfuser/data/.
:eof
7 Antworten
- LÖSUNG 60730 schreibt am 26.08.2011 um 11:34:01 Uhr
- LÖSUNG Landstreicher schreibt am 26.08.2011 um 11:46:38 Uhr
- LÖSUNG Landstreicher schreibt am 26.08.2011 um 12:28:06 Uhr
- LÖSUNG 99045 schreibt am 26.08.2011 um 13:09:27 Uhr
- LÖSUNG Landstreicher schreibt am 26.08.2011 um 14:06:15 Uhr
- LÖSUNG 99045 schreibt am 26.08.2011 um 14:10:51 Uhr
- LÖSUNG Landstreicher schreibt am 29.08.2011 um 09:03:23 Uhr
- LÖSUNG 99045 schreibt am 26.08.2011 um 14:10:51 Uhr
- LÖSUNG Landstreicher schreibt am 26.08.2011 um 14:06:15 Uhr
- LÖSUNG 99045 schreibt am 26.08.2011 um 13:09:27 Uhr
- LÖSUNG Landstreicher schreibt am 26.08.2011 um 12:28:06 Uhr
- LÖSUNG Landstreicher schreibt am 26.08.2011 um 11:46:38 Uhr
LÖSUNG 26.08.2011 um 11:34 Uhr
moin,
Eine Batch ist ein komplexer Satz einzeln funktionierender Schritte.
Erst - wenn alle Schritte einzeln funktionieren, baut man die in eine gesamtbatch rein.
Und wenn das 100% Wasserdicht ist darf 01@echo ... da rein.
Von daher.........
Gruß
01. @echo off
Mein liebling unter den Batch Fragen....Eine Batch ist ein komplexer Satz einzeln funktionierender Schritte.
Erst - wenn alle Schritte einzeln funktionieren, baut man die in eine gesamtbatch rein.
Und wenn das 100% Wasserdicht ist darf 01@echo ... da rein.
Von daher.........
WMIC CPU GET LoadPercentage, DeviceID
- liefert das auf deinem Kasten überhaupt was aus?
Gruß
LÖSUNG 26.08.2011 um 11:46 Uhr
Hi,
ja generell funktioniert die Batch und er wirft mir die Werte auch raus .. wie gesagt, nur wenn ich es in den Task Scheduler packe und ihm sage er soll es Ausführen egal ob der User angemeldet ist oder nicht , kommt statt :
Ausgabe der Datei CPU_%computername%_%year%%mon%%day%:
Q4DE8NCOU29 08/25/2011 12:50 1
Q4DE8NCOU29 08/25/2011 13:00 3
Q4DE8NCOU29 08/25/2011 13:10 3
Q4DE8NCOU29 08/25/2011 13:20 1
nur noch ...
Q4DE8NCOU29 08/25/2011 15:30
Q4DE8NCOU29 08/25/2011 15:40
Q4DE8NCOU29 08/25/2011 15:50
Q4DE8NCOU29 08/25/2011 16:00
Q4DE8NCOU29 08/25/2011 16:10
man sieht es auch sehr gut daran, das die Grunddatei die ich dann auf die Werte durchstöbern will keine Werte mehr beinhaltet:
inhalt der cpu2.txt:
Prozessor CPU0 und % Auslastung
Prozessor CPU1 und % Auslastung
Prozessor und % Auslastung
wenn die batch handisch ausgeführt wird steht in der cpu2.txt folgenes:
Prozessor CPU0 und 18 % Auslastung
Prozessor CPU1 und 1 % Auslastung
Prozessor und % Auslastung
ne idee ?
gruß
ja generell funktioniert die Batch und er wirft mir die Werte auch raus .. wie gesagt, nur wenn ich es in den Task Scheduler packe und ihm sage er soll es Ausführen egal ob der User angemeldet ist oder nicht , kommt statt :
Ausgabe der Datei CPU_%computername%_%year%%mon%%day%:
Q4DE8NCOU29 08/25/2011 12:50 1
Q4DE8NCOU29 08/25/2011 13:00 3
Q4DE8NCOU29 08/25/2011 13:10 3
Q4DE8NCOU29 08/25/2011 13:20 1
nur noch ...
Q4DE8NCOU29 08/25/2011 15:30
Q4DE8NCOU29 08/25/2011 15:40
Q4DE8NCOU29 08/25/2011 15:50
Q4DE8NCOU29 08/25/2011 16:00
Q4DE8NCOU29 08/25/2011 16:10
man sieht es auch sehr gut daran, das die Grunddatei die ich dann auf die Werte durchstöbern will keine Werte mehr beinhaltet:
inhalt der cpu2.txt:
Prozessor CPU0 und % Auslastung
Prozessor CPU1 und % Auslastung
Prozessor und % Auslastung
wenn die batch handisch ausgeführt wird steht in der cpu2.txt folgenes:
Prozessor CPU0 und 18 % Auslastung
Prozessor CPU1 und 1 % Auslastung
Prozessor und % Auslastung
ne idee ?
gruß
LÖSUNG 26.08.2011 um 12:28 Uhr
eine Sache ist mir noch aufgefallen!
wenn ich im Task Scheduler auswähle "Nur ausfüren wenn der User angemeldet ist" funktioniert die Abfrage WMIC CPU GET LoadPercentage, DeviceID
DeviceID LoadPercentage
CPU0 10
CPU1 2
sobald ich das ändere in "egal ob der User angemeldet ist oder nicht" kommt nur noch
DeviceID LoadPercentage
CPU0
CPU1
ich bin verwirrt ...
wenn ich im Task Scheduler auswähle "Nur ausfüren wenn der User angemeldet ist" funktioniert die Abfrage WMIC CPU GET LoadPercentage, DeviceID
DeviceID LoadPercentage
CPU0 10
CPU1 2
sobald ich das ändere in "egal ob der User angemeldet ist oder nicht" kommt nur noch
DeviceID LoadPercentage
CPU0
CPU1
ich bin verwirrt ...
LÖSUNG 26.08.2011 um 13:09 Uhr
LÖSUNG 26.08.2011 um 14:06 Uhr
LÖSUNG 26.08.2011 um 14:10 Uhr
LÖSUNG 29.08.2011 um 09:03 Uhr
Bitte ???
Du hast schon meine Beiträge richtig gelesen ? Deinen Link habe ich schon getestet ... allerdings bringt er mir das selbe Ergebnis!
Also noch mal:
der Taskscheduler startet alles soweit an nur eben ""WMIC CPU GET LoadPercentage, DeviceID" funktioniert nicht richtig. liegt das an berechtigungen ? einen falschen Aufruf durch den Taskscheduler oder habe ich etwas falsch gemacht beim einplanen ?
gruß
PS: Problem gelöst!
Du hast schon meine Beiträge richtig gelesen ? Deinen Link habe ich schon getestet ... allerdings bringt er mir das selbe Ergebnis!
Also noch mal:
der Taskscheduler startet alles soweit an nur eben ""WMIC CPU GET LoadPercentage, DeviceID" funktioniert nicht richtig. liegt das an berechtigungen ? einen falschen Aufruf durch den Taskscheduler oder habe ich etwas falsch gemacht beim einplanen ?
gruß
PS: Problem gelöst!