'*** v6.1 *** www.dieseyer.de ******************************** ' File: progr-cpu-last-test.vbs ' Autor: dieseyer@gmx.de ' dieseyer.de ' ' schreibt über 10s drei Werte in eine LOG-Datei: ' ' ' Microsoft: The Portable Script Center - v3.0, Nov. 2004 ' "Monitor Process Performance" ' '************************************************************ Option Explicit ' Siehe http://dieseyer.de/dse-wsh-lernen.html#OptionExpl Dim Txt, n, Progr Progr = "C:\Programme\AVPersonal\AVWIN.EXE" Progr = """C:\Programme\AntiVir PersonalEdition Classic\avcenter.exe""" Dim WSHShell : Set WSHShell = WScript.CreateObject("WScript.Shell") ' LOG-Datei für Protokollierung öffnen Dim fso : Set fso = WScript.CreateObject("Scripting.FileSystemObject") Dim FileOut : Set FileOut = fso.OpenTextFile( Replace( WSCript.ScriptName, "vbs", "log" ), 2, true) ' WMI bereit stellen Dim objWMIService : Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") Dim objRefresher : Set objRefresher = CreateObject("WbemScripting.SWbemRefresher") Dim colItems : Set colItems = objRefresher.AddEnum (objWMIService, "Win32_PerfFormattedData_PerfProc_Process").objectSet Dim objItem ' zu überwachendes Programm starten fileOut.WriteLine( now() & vbTab & "Wird gestartet: " & Progr ) WshShell.Run Progr, , False ' nicht aufs Ende des gestarteten Programms warten fileOut.WriteLine( now() & vbTab & "Läuft : " & Progr ) ' ProgrammName, ohne Erweiterung und ohne Pfad Progr = Replace( Progr, """", "" ) Progr = Mid( Progr, InStrRev( Progr, "\" ) + 1 ) Progr = Left( Progr, InStrRev( Progr, "." ) - 1 ) ' MsgBox Progr, , "0043 :: " & WScript.ScriptName : WScript.Quit ' gestartetes Programm überwachen objRefresher.Refresh Do For Each objItem in colItems If InStr( LCase( objItem.Name ), LCase( Progr ) ) > 0 Then Txt = Txt & "Handle Count: " & objItem.HandleCount & vbTab Txt = Txt & "Percent Processor Time: " & objItem.PercentProcessorTime & vbTab Txt = Txt & "Working Set: " & objItem.WorkingSet & vbTab fileOut.WriteLine( now() & vbTab & Txt ) : Txt = "" End If Next wscript.sleep( 100 ) : n = n + 1 : If n > 100 Then Exit Do objRefresher.Refresh Loop fileOut.WriteLine( "0062 :: " & now() & vbTab & "Skriptende" ) fileOut.Close Set FileOut = Nothing ' Datei schließen '*** v6.1 *** www.dieseyer.de ******************************** Function Now() '************************************************************ ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' ! ! ! Damit funktioniert natürlich DateDiff nicht mehr ! ! ! ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ' Now gibt jetzt einen String und kein (verwendbares) Datum zurück Now = Date & " " & Time & ",00" ' Wenn Timer() ein Komma enthält, wird: Now = Date & " " & Time & [Rest von Timer] If InStr( Timer(), "," ) > 0 Then Now = Date & " " & Time & Mid( Timer(), InStr( Timer(), "," ) ) ' Wenn Timer() nach dem Komma einstellig ist, wir eine 0 angehangen If Len( Mid( Now, InStrRev( Now, "," ) ) ) = 2 Then Now = Now & "0" End Function ' Now()