Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » WMI - WMI\VBS узнать размер папки

Ответить
Настройки темы
WMI - WMI\VBS узнать размер папки

Старожил


Сообщения: 226
Благодарности: 4

Профиль | Отправить PM | Цитировать


Добрый день.
Имеется скрипт сбора статистики с использованием 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

-------
Альтернатива Всему!


Отправлено: 13:07, 27-09-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Отправлено: 19:04, 27-09-2013 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 3
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 18:01, 14-06-2016 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


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

Отправлено: 00:45, 15-06-2016 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » WMI - WMI\VBS узнать размер папки

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
[решено] Как узнать размер кластера? Busla Хочу все знать 7 11-11-2012 21:11
CMD/BAT - [решено] Возможно ли в свойствах ярлыка поменять размер шрифта посредством cmd/vbs? Anton04 Скриптовые языки администрирования Windows 20 06-09-2011 16:53
Как узнать размер будущего видеофайла? ohimo Видео и аудио: обработка и кодирование 10 18-01-2007 11:37
VBS/WSH/JS - *VBS/WHS/JS* | Серийный номер процессора, через WMI inul Программирование и базы данных 2 25-01-2006 15:51
Как узнать размер пикселя? SASHA 333 Программирование и базы данных 3 20-03-2005 20:19




 
Переход