У меня стоит 64-битная винда, и я пишу скрипт, который в журнал записывает нужную мне информацию. При этом встал ряд проблем: - В чем ошибка, в строке 31? Поскольку из-за нее накрывается скрипт, но нужно, чтобы этот фрагмент выполнялся | Код | For Each objItem in colItems |
- При получении инфы о том, сколько ОП свободно, на 32х-битной винде делал так: | Код | strComputer = "." Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") set objRefresher = CreateObject("WbemScripting.SWbemRefresher") Set objMemory = objRefresher.AddEnum _ (objWMIService, "Win32_PerfFormattedData_PerfOS_Memory").objectSet objRefresher.Refresh For each intAvailableBytes in objMemory SummaryString=SummaryString & "Free Memory: " & intAvailableBytes.AvailableMBytes Next
|
А как это сделать для 64х-битной винды? Ведь этот класс неподходит под мою винду. Собственно текущий код скрипта? | Код | ' === Script Information Header === ' Скрипт определяет ряд значений: ' - загрузка процессора ' - загрузка ОП ' - сколько места свободно на дисках ' и записывает их в WSH.log ' =================================
' === Script Main Logic === Dim colItems,objItem,strComputer,kelvinTemp const num1GiB = 1073741824 SummaryString = "" intUsedProc = 0 intUsedRAM = 0 intCurrTemp = 0 Set WshShell = WScript.CreateObject("WScript.Shell")
' === Запись в WSH.log === ' получаем данные о текущей загрузке процессора Set objWMIService = GetObject( "winmgmts://./root/cimv2" ) Set colItems = objWMIService.ExecQuery( "SELECT * FROM Win32_Processor", "WQL", wbemFlagReturnImmediately + wbemFlagForwardOnly ) For Each objItem in colItems intUsedProc=intUsedProc+objItem.LoadPercentage Next SummaryString=SummaryString & "Processor used on: " & intUsedProc & "%"
'On Error resume Next ' получаем данные о температуре процессора strComputer="." Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\WMI") Set colItems = objWMIService.ExecQuery("Select * from MSAcpi_ThermalZoneTemperature",,48) For each objItem in colItems With objItem kelvinTemp = .CurrentTemperature FarTemp = ((9/5)*((.CurrentTemperature - 2732)/10)) + 32 intCurrTemp = ((FarTemp - 32) * (5/9)) End With Next SummaryString=SummaryString & vBcrLf & "Current temperature: " & intCurrTemp ' получаем данные о том, сколько памяти свободно 'SummaryString=SummaryString & vbCrLf & "Available RAM in MBytes: " & intUsedRAM
' получаем данные о свободном месте на дисках strComputer = "." Set objWMIService = GetObject ("winmgmts:\\" & strComputer & "\root\cimv2") Set colItems = objWMIService.ExecQuery ("Select * from Win32_LogicalDisk") For Each objDiskDrive in colItems SummaryString=SummaryString+ vBcrLf + "Free Space " & objDiskDrive.Name & " " & CInt(objDiskDrive.FreeSpace/num1GiB) & " Gb" Next
'производим запись в журнал WshShell.LogEvent 4,SummaryString
' завершаем работу скрипта WshShell=0
|
Это сообщение отредактировал(а) Relrin - 3.7.2012, 16:20
|