landstreicher
Goto Top

Batch ausführen in Task Scheduler Windows Server 2008 funktioniert nur teilweise

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:
@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

Gruß ein Landstreicher

Content-ID: 172122

Url: https://administrator.de/forum/batch-ausfuehren-in-task-scheduler-windows-server-2008-funktioniert-nur-teilweise-172122.html

Ausgedruckt am: 25.12.2024 um 02:12 Uhr

60730
60730 26.08.2011 um 11:34:01 Uhr
Goto Top
moin,

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ß
Landstreicher
Landstreicher 26.08.2011 um 11:46:38 Uhr
Goto Top
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ß
Landstreicher
Landstreicher 26.08.2011 um 12:28:06 Uhr
Goto Top
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 ...
99045
99045 26.08.2011 um 13:09:27 Uhr
Goto Top
Versuch's mal mit Trick 31 über eine Verknüpfung nach http://www.wintotal.de/tipparchiv/?id=1795
Landstreicher
Landstreicher 26.08.2011 um 14:06:15 Uhr
Goto Top
es muss doch aber auch anders gehen.

mein Problem ist doch lediglich, das er den Befehl "WMIC CPU GET LoadPercentage, DeviceID" aus einer Batch herraus, gesteuert über den Tas Scheduler nicht richtig ausführt.

siehe letzter Beitrag von mir.

gruß Landstreicher
99045
99045 26.08.2011 um 14:10:51 Uhr
Goto Top
Dein Problem ist, dass du dir was in den Kopf gesetzt hast und nicht bereit bist, funktionierene Lösungen auszuprobieren.

Schönen Tag noch.
Landstreicher
Landstreicher 29.08.2011 um 09:03:23 Uhr
Goto Top
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!