WMI-мониторинг дисков

отредактировано Сентябрь 2017 Раздел: Обсуждение 10-Strike LANState (Pro)
sma7
Отправлено: 20.01.16 12:03

Добрый день!
Такой вопрос по программе Lanstate Pro, установлена последняя версия.
Хочу мониторить одной проверкой несколько локальных дисков на одном сервере.
Есть ли такая возможность через WMI? я делаю wql-запрос:
select * from Win32_LogicalDisk where FreeSpace>524288000
и указал что проверка прошла если FreeSpace больше 524288000

но при мониторинге я так понимаю из селекта выбирается только первый попадающий под условия локальный диск (С:) и на остальные он уже не обращает внимание.
Как исправить ситуацию и есть ли такая возможность в программе?
Не охота делать проверки на каждый диск одного сервера по отдельности тем самым нагружать сервер лишними запросами и мониторингом.

Комментарии

  • Здравствуйте!
    Для этой задачи подойдет проверка JScript или VBScript. Можно описать в скрипте все вычисления и программа их выполнит. В данном случае, нужно обойти в WQL все диски и просуммировать их свободный объем.
    Единственный момент, эти проверки пока могут возвращать только логический результат - true или false. Поэтому сравнение с заданным значением (524288000 ) тоже нужно делать внутри скрипта.

    Для примера вот код, который получает объем свободной памяти (без кода сравнения с заданным значением):

    function Main

    strHostAddr = "%A"
    strLogin = ""
    strPassword = ""
    Set objSWbemLocator = CreateObject("WbemScripting.SWbemLocator")
    Set objWMIService = objSWbemLocator.ConnectServer(strHostAddr, "root\cimv2", strLogin, strPassword)
    Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem",,48)
    For Each objItem in colItems
    Main = Int((int(objItem.TotalVisibleMemorySize) - int(objItem.FreePhysicalMemory))/int(objItem.TotalVisibleMemorySize)*100)
    Next
    end function
Войдите или Зарегистрируйтесь чтобы комментировать.