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-Key: 172122

Url: https://administrator.de/contentid/172122

Printed on: April 19, 2024 at 03:04 o'clock

Mitglied: 60730
60730 Aug 26, 2011 at 09:34:01 (UTC)
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ß
Member: Landstreicher
Landstreicher Aug 26, 2011 at 09:46:38 (UTC)
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ß
Member: Landstreicher
Landstreicher Aug 26, 2011 at 10:28:06 (UTC)
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 ...
Mitglied: 99045
99045 Aug 26, 2011 at 11:09:27 (UTC)
Goto Top
Versuch's mal mit Trick 31 über eine Verknüpfung nach http://www.wintotal.de/tipparchiv/?id=1795
Member: Landstreicher
Landstreicher Aug 26, 2011 at 12:06:15 (UTC)
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
Mitglied: 99045
99045 Aug 26, 2011 at 12:10:51 (UTC)
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.
Member: Landstreicher
Landstreicher Aug 29, 2011 at 07:03:23 (UTC)
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!