bombording
27-09-2013, 13:07
Добрый день.
Имеется скрипт сбора статистики с использованием VBS\WMI средств.
Скрипт собирает данные о параметрах компьютера и заносит их в csv файл.
Вопрос:
Возможно ли, что бы скрипт так же собирал информацию о размере определенной локальной папки? Скажем C:\Program Files\Work
Const ForAppending = 8
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.Swbemrefresher")
Set objProc = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_Processor").objectSet
Set objMemory = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_Memory").objectSet
Set objDiskSpace = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfDisk_LogicalDisk").objectSet
Set objQueueLength = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfNet_ServerWorkQueues").objectSet
Set objProcess = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfProc_Process").objectSet
objRefresher.Refresh
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.OpenTextFile _
(".\performance.csv", ForAppending, True)
objLogFile.Write("Time;Proc;Mem;C:;D:;QDisk;QNet;") & VbCrLf
While (True)
objLogFile.Write(Now) & ";"
For each intProc in objProc
If intProc.Name = "_Total" Then
objLogFile.Write(intProc.PercentProcessorTime) & ";"
End If
Next
For each intAvailableBytes in objMemory
objLogFile.Write(intAvailableBytes.AvailableMBytes) & ";"
Next
For each intDiskSpace in objDiskSpace
If intDiskSpace.Name = "C:" or intDiskSpace.Name = "D:" Then
objLogFile.Write(intDiskSpace.FreeMegabytes) & ";"
End If
Next
intTotalHealth = 0
For each intQueueLength in objDiskSpace
intTotalHealth = intTotalHealth + intQueueLength.CurrentDiskQueueLength
Next
objLogFile.Write(intTotalHealth) & ";"
intTotalHealth = 0
For each intServerQueueLength in objQueueLength
intTotalHealth = intTotalHealth + intServerQueueLength.QueueLength
Next
objLogFile.Write(intTotalHealth) & ";"
For each intProcess in objProcess
If intProcess.PercentProcessorTime <> 0 and intProcess.Name <> "Idle" and intProcess.Name <> "_Total" Then
objLogFile.Write(intProcess.Name & ":" & intProcess.PercentProcessorTime) & ";"
End If
Next
objLogFile.Write VbCrLf
Wscript.Sleep 10000
objRefresher.Refresh
Wend
objLogFile.Close
Имеется скрипт сбора статистики с использованием VBS\WMI средств.
Скрипт собирает данные о параметрах компьютера и заносит их в csv файл.
Вопрос:
Возможно ли, что бы скрипт так же собирал информацию о размере определенной локальной папки? Скажем C:\Program Files\Work
Const ForAppending = 8
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
set objRefresher = CreateObject("WbemScripting.Swbemrefresher")
Set objProc = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_Processor").objectSet
Set objMemory = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfOS_Memory").objectSet
Set objDiskSpace = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfDisk_LogicalDisk").objectSet
Set objQueueLength = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfNet_ServerWorkQueues").objectSet
Set objProcess = objRefresher.AddEnum _
(objWMIService, "Win32_PerfFormattedData_PerfProc_Process").objectSet
objRefresher.Refresh
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objLogFile = objFSO.OpenTextFile _
(".\performance.csv", ForAppending, True)
objLogFile.Write("Time;Proc;Mem;C:;D:;QDisk;QNet;") & VbCrLf
While (True)
objLogFile.Write(Now) & ";"
For each intProc in objProc
If intProc.Name = "_Total" Then
objLogFile.Write(intProc.PercentProcessorTime) & ";"
End If
Next
For each intAvailableBytes in objMemory
objLogFile.Write(intAvailableBytes.AvailableMBytes) & ";"
Next
For each intDiskSpace in objDiskSpace
If intDiskSpace.Name = "C:" or intDiskSpace.Name = "D:" Then
objLogFile.Write(intDiskSpace.FreeMegabytes) & ";"
End If
Next
intTotalHealth = 0
For each intQueueLength in objDiskSpace
intTotalHealth = intTotalHealth + intQueueLength.CurrentDiskQueueLength
Next
objLogFile.Write(intTotalHealth) & ";"
intTotalHealth = 0
For each intServerQueueLength in objQueueLength
intTotalHealth = intTotalHealth + intServerQueueLength.QueueLength
Next
objLogFile.Write(intTotalHealth) & ";"
For each intProcess in objProcess
If intProcess.PercentProcessorTime <> 0 and intProcess.Name <> "Idle" and intProcess.Name <> "_Total" Then
objLogFile.Write(intProcess.Name & ":" & intProcess.PercentProcessorTime) & ";"
End If
Next
objLogFile.Write VbCrLf
Wscript.Sleep 10000
objRefresher.Refresh
Wend
objLogFile.Close