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-ID: 80351

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

Ausgedruckt am: 21.11.2024 um 13:11 Uhr

gemini
gemini 10.02.2008 um 10:17:53 Uhr
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
miniversum
miniversum 10.02.2008 um 10:24:27 Uhr
Goto Top
Danke. Funktioniert so.

miniversum
stbewo
stbewo 12.02.2008 um 08:12:07 Uhr
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