Вход на хостинг
IT-новости
20.04.2016 iPhone 2017 года поместят в водонепроницаемый корпус из стекла
Линейка iPhone в новом году серьезно поменяется. В этом уверен аналитический исследователь Мин Чи Ку......
30.07.2015 Ищем уникальный контент для сайта
Ищем уникальный контент для сайта Без уникального контента Ваш сайт обречен на то, что его страницы......
For Each strOS in objOS
dtmInstallDate = strOS.InstallDate
Wscript.Echo WMIDateStringToDate(dtmInstallDate)
Next
Function WMIDateStringToDate(dtmInstallDate)
WMIDateStringToDate = CDate(Mid(dtmInstallDate, 5, 2) & "/" & Mid(dtmInstallDate, 7, 2) & "/" & Left(dtmInstallDate, 4) & " " & Mid (dtmInstallDate, 9, 2) & ":" & Mid(dtmInstallDate, 11, 2) & ":" & Mid(dtmInstallDate, 13, 2))
End Function
Возникает вопрос, почему дата и время в WMI представлены столь странным образом. Ответ на самом деле прост. Вспомните, что одним из важнейших элементов WMI является язык WQL. Для удобства обработки даты и времени в WMI с помощью языка WQL (внутренней сортировки и группировки) все даты представлены так, что в самых старших разрядах идет год, затем месяц, потом – день, потом часы, минуты и секунды. Соответственно для того, чтобы отсортировать массив данных, полученных из WMI по дате времени, не нужно делать никаких дополнительных усилий.
Некоторые усилия потребуются при отображении этих данных пользователю или сохранении их в отчете. С выходом Windows XP эта задача стала решаться еще легче. В наборе объектов для сценариев WMI появился специальный класс объекта SWbemDateTime. Он отвечает за представление даты и времени в удобном для чтения виде. То есть фактически проделывает ту же работу, что и функция WMIDateStringToDate из листинга 1. Пример использования этого класса дан в листинге 2.
Листинг 2. Использование объекта SWbemDateTime. Работает только на Windows XP и новее.
Set dtmInstallDate = CreateObject("WbemScripting.SWbemDateTime")
strComputer = "."
Set objWMIService = GetObject("winmgmts:\" & strComputer & " ootcimv2")
Set objOS = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each strOS in objOS
dtmInstallDate.Value = strOS.InstallDate
Wscript.Echo dtmInstallDate.GetVarDate