 |
|
bombording |
27-09-2013 13:07 2224811 |
WMI\VBS узнать размер папки
Добрый день.
Имеется скрипт сбора статистики с использованием 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
|
Цитата:
Цитата bombording
Возможно ли, что бы скрипт так же собирал информацию о размере определенной локальной папки? Скажем C:\Program Files\Work »
|
Код:
Option Explicit
Dim strComputer
Dim strFolder
Dim objSWbemLocator
Dim objSWbemServicesEx
strComputer = "."
strFolder = "C:\Program Files\Far Manager"
Set objSWbemLocator = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")
WScript.Echo GetSizeOfFolder(objSWbemServicesEx.Get("Win32_Directory.Name='" & strFolder & "'"))
Set objSWbemServicesEx = Nothing
Set objSWbemLocator = Nothing
WScript.Quit 0
'=============================================================================
'=============================================================================
Function GetSizeOfFolder(objSWbemObjectEx_Win32_Directory)
Dim lngFileSize
Dim objSWbemObjectEx
lngFileSize = 0
For Each objSWbemObjectEx In objSWbemObjectEx_Win32_Directory.Associators_("Win32_SubDirectory", "Win32_Directory", "PartComponent")
lngFileSize = lngFileSize + GetSizeOfFolder(objSWbemObjectEx)
Next
For Each objSWbemObjectEx In objSWbemObjectEx_Win32_Directory.Associators_("CIM_DirectoryContainsFile", "CIM_DataFile")
lngFileSize = lngFileSize + objSWbemObjectEx.FileSize
Next
GetSizeOfFolder = lngFileSize
End Function
'=============================================================================
NB! Существование папки никак не проверяется.
|
А подскажите, как можно сделать, чтобы скрипт при логоне считывал папку currentuser?
Задача стоит чтобы при логоне считытался размер папки пользователя и клался в виде тхт файла на сетевую шару. например имя файла - имя пк, а внутри логин и размер папки?
|
Uranich, и что будет, когда на той же машине зарегистрируется другой пользователь?! Прошлый файл уйдет в небытие. И что такое «папка currentuser»/«папка пользователя»?
|
Время: 07:18.
© OSzone.net 2001-