miniversum
Goto Top

CPU Auslastung per Skript abfragen

Hallo
Ich suche eine Möglichkeit die CPU Auslastung abzufragen um sie in einer Batch nutzen zu können. Eine Lösung in VBS geht natürlich auch (wird woll auch denke ich nicht anders möglich sein) denn auf ein externes Programm würde ich gerne dabei verzichten. Es sollte also nur mit Boardmitteln auskommen.
Der Hintergrund ist der, das mehrere Anwendungen nacheinander gestertet werden sollen und dabei der Start der nächsten Anwendung immer solange warten soll bis die CPU Auslastung auf einem niedrigen Stand ist. Da nebenher noch andere Programme laufen ist das einfügen von festen Wartezeiten (bisherige Lösung) eine sehr schlechte Lösung.
Ich habe zwar schon im Internet nach Möglichkeiten gesucht, ich finde allerdings nur Lösungen in VB beidenen ich es allerdings nicht schaffe sie in VBS zu übertragen.
Ein weiterer, zugegebenermaßen auch schlechter, Ansatz war es auch eine Datei auf Festplatte zu erstellen und die Zeit zu nehmen die für diese Erstellung gebraucht wird. Aber das sind keine vernünftigen Angaben die man da mach kann und ist auch nur eine Behelfslösung.

miniversum

Content-Key: 80351

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

Printed on: April 18, 2024 at 01:04 o'clock

Member: gemini
gemini Feb 10, 2008 at 09:17:53 (UTC)
Goto Top
Hallo miniversum,

Ich suche eine Möglichkeit die CPU Auslastung abzufragen um sie in einer Batch nutzen zu können. Eine Lösung in VBS geht natürlich auch (wird woll auch denke ich nicht anders möglich sein)
Yep, so ist es

Ich habe zwar schon im Internet nach Möglichkeiten gesucht, ich finde allerdings nur Lösungen in VB beidenen ich es allerdings nicht schaffe sie in VBS zu übertragen.
Auszug aus: Enumerating Processor Information
On Error Resume Next

strComputer = "."  
Set objWMIService = GetObject("winmgmts:" _  
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")  

Set colItems = objWMIService.ExecQuery("Select * from Win32_Processor")  

For Each objItem in colItems
    Wscript.Echo "Load Percentage: " & objItem.LoadPercentage  
Next

Ein weiterer, zugegebenermaßen auch schlechter, Ansatz war es auch eine Datei auf Festplatte zu erstellen und die Zeit zu nehmen die für diese Erstellung gebraucht wird.
Hm, was willst du da messen? Die Erstellung der Datei erzeugt ja ihrerseits Systemlast.

Schönes Wochenende
gemini
Member: miniversum
miniversum Feb 10, 2008 at 09:24:27 (UTC)
Goto Top
Danke. Funktioniert so.

miniversum
Member: stbewo
stbewo Feb 12, 2008 at 07:12:07 (UTC)
Goto Top
Hi miniversum,

für Deine Prozessorauslastung in einem Batch kannst Du auch folgendes nehmen. Die WMI Console gibt es - glaube ich - erst ab XP SP2.


FOR /F "tokens=1,2 skip=1 delims= " %%i IN ('"WMIC CPU GET LoadPercentage, DeviceID"') DO (
echo Prozessor %%i und %%j %%% Auslastung
)

Gruß
Stefan