|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » WMI - WMI\VBS узнать размер папки |
|
WMI - WMI\VBS узнать размер папки
|
Старожил Сообщения: 226 |
Добрый день.
Имеется скрипт сбора статистики с использованием 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
|
Профиль | Отправить PM | Цитировать Цитата bombording:
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 '============================================================================= |
|
Отправлено: 19:04, 27-09-2013 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 3
|
Профиль | Отправить PM | Цитировать А подскажите, как можно сделать, чтобы скрипт при логоне считывал папку currentuser?
Задача стоит чтобы при логоне считытался размер папки пользователя и клался в виде тхт файла на сетевую шару. например имя файла - имя пк, а внутри логин и размер папки? |
Отправлено: 18:01, 14-06-2016 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Uranich, и что будет, когда на той же машине зарегистрируется другой пользователь?! Прошлый файл уйдет в небытие. И что такое «папка currentuser»/«папка пользователя»?
|
Отправлено: 00:45, 15-06-2016 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] Как узнать размер кластера? | 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 |
|