WMI - WMI\VBS узнать размер папки

Ответить
Аватара пользователя
bombording

WMI - WMI\VBS узнать размер папки

Сообщение bombording »

Добрый день.

Имеется скрипт сбора статистики с использованием 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
Аватара пользователя
Iska

Re: WMI - WMI\VBS узнать размер папки

Сообщение Iska »

Цитата bombording:



Возможно ли, что бы скрипт так же собирал информацию о размере определенной локальной папки? Скажем C:\Program Files\Work
WMI - WMI\VBS узнать размер папки






Код:

Код: Выделить всё

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! Существование папки никак не проверяется.
Аватара пользователя
Uranich

Re: WMI - WMI\VBS узнать размер папки

Сообщение Uranich »

А подскажите, как можно сделать, чтобы скрипт при логоне считывал папку currentuser?



Задача стоит чтобы при логоне считытался размер папки пользователя и клался в виде тхт файла на сетевую шару. например имя файла - имя пк, а внутри логин и размер папки?
Аватара пользователя
Iska

Re: WMI - WMI\VBS узнать размер папки

Сообщение Iska »

Uranich, и что будет, когда на той же машине зарегистрируется другой пользователь?! Прошлый файл уйдет в небытие. И что такое «папка currentuser»/«папка пользователя»?
Ответить

Вернуться в «Скриптовые языки администрирования Windows»