Объект SWbemDateTime
Объект SWbemDateTime — это вспомогательный объект для синтаксического анализа и задания значений даты и времени common Information Model (CIM). Она играет роль, аналогичную SWbemObjectPath, которая обеспечивает помощь в форматировании и интерпретации путей объектов. Вызов CreateObject VBScript можно использовать для создания объекта SWbemDateTime .
Объект SWbemDateTime можно инициализировать из VT_DATE или значений FILETIME с помощью методов объекта. С помощью свойств объекта значение можно проанализировать на год компонента, месяц, день, час, минуты, секунды или микросекунды. Объект SWbemDateTime можно отформатировать в локальные или utc-значения. Дополнительные сведения см. в разделе "Формат даты и времени".
SWbemDateTime — это единственный объект скрипта инструментария управления Windows (WMI), помеченный как безопасный для инициализации и скриптов, выполняемых на HTML-страницах в Internet Explorer.
Элементы
Объект SWbemDateTime имеет следующие типы элементов:
Методы
Объект SWbemDateTime имеет эти методы.
Метод | Описание |
---|---|
GetFileTime | Преобразует дату и время FILETIME , выраженные как BSTR, в формат WMI DATETIME . |
GetVarDate | Преобразует значение даты и времени в формате WMI DATETIME в VT_DATE. |
SetFileTime | Преобразует формат WMI DATETIME в дату и время FILETIME , выраженные как BSTR. |
SetVarDate | Преобразует VT_DATE отформатированные дату и время в WMI DATETIME. |
Свойства
Объект SWbemDateTime имеет эти свойства.
Свойство | Тип доступа | Описание |
---|---|---|
День |
Чтение/запись |
Компонент дня значения даты и времени CIM. |
DaySpecified |
Чтение/запись |
Указывает, указан ли день в качестве подстановочного знака. |
Hours |
Чтение/запись |
Часы дневного компонента значения даты и времени CIM. |
HoursSpecified |
Чтение/запись |
Указывает, указан ли час в качестве подстановочного знака. |
IsInterval |
Чтение/запись |
Указывает, что по крайней мере один компонент даты и времени CIM представляет интервал, а не дату. |
Микросекунд |
Чтение/запись |
Компонент микросекунд значения даты и времени CIM. |
MicrosecondsSpecified |
Чтение/запись |
Указывает, указан ли компонент microseconds или оставлен в качестве подстановочного знака. |
Минуты |
Чтение/запись |
Компонент минут значения даты и времени CIM. |
MinutesSpecified |
Чтение/запись |
Указывает, указан ли компонент minutes или оставлен в качестве подстановочного знака. |
Месяц |
Чтение/запись |
Компонент месяца значения даты и времени CIM. |
MonthSpecified |
Чтение/запись |
Указывает, указан ли месяц или оставлен в качестве подстановочного знака. |
Секунды |
Чтение/запись |
Компонент секунд значения даты и времени CIM. |
SecondsSpecified |
Чтение/запись |
Указывает, указан или оставлен ли компонент секунд в качестве подстановочного знака. |
Формат UTC. |
Чтение/запись |
Компонент UTC значения даты и времени CIM. |
UTCSpecified |
Чтение/запись |
Указывает, указан ли компонент UTC или оставлен в качестве подстановочного знака. |
Значение |
Чтение/запись |
Полное значение даты и времени CIM. |
Год |
Чтение/запись |
Компонент года значения даты и времени CIM. |
YearSpecified |
Чтение/запись |
Указывает, указан ли год или нет в качестве подстановочного знака. |
Remarks
WMI записывает метки времени в формате UTC. ФОРМАТ UTC не является форматом, используемым большинством разработчиков и ИТ-администраторов. Таким образом, распространенной проблемой является определение того, как преобразовать UTC в что-то более удобочитаемое. Дополнительные сведения о работе с UTC см. в статье "Задачи WMI: Даты и время ", а также работа с датами и временем с помощью WMI. Вы также можете прочитать запись блога о времени (о времени и о датах, тоже) для получения дополнительных сведений.
Любое числовое поле может иметь подстановочное значение, если свойству IsInterval присвоено значение FALSE. Поля со значениями подстановочных знаков содержат звездочки во всем поле.
Каждое свойство, например Day, имеет соответствующее логическое значение, например DaySpecified. Если DaySpecified имеет значение FALSE, значение интерпретируется как интервал, а не число от 01 до 31. Если интервал используется где-либо в значении даты и времени CIM, то Параметр IsInterval также имеет значение TRUE. Значение по умолчанию для значения даты и времени CIM должно содержать дату, а не один или несколько интервалов.
Например, если SWbemDateTime.DaySpecified имеет значение TRUE, то значение SWbemDateTime.Value включает текущее значение SWbemDateTime.Day, в противном случае это значение подстановочного знака. Свойство IsInterval равно FALSE в любом случае.
Примеры
В следующем примере кода скрипта показано, как использовать объект SWbemDateTime для синтаксического анализа значения свойства datetime, считываемого из репозитория WMI, свойства InstallDate в Win32_OperatingSystem.
' Create a new datetime object.
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
' Retrieve a WMI object that contains a datetime value.
for each os in GetObject( _
"winmgmts:").InstancesOf ("Win32_OperatingSystem")
' The InstallDate property is a CIM_DATETIME.
MsgBox os.InstallDate
dateTime.Value = os.InstallDate
' Display the year of installation.
MsgBox "This OS was installed in the year " & dateTime.Year
' Display the installation date using the VT_DATE format.
MsgBox "Full installation date (VT_DATE format) is " _
& dateTime.GetVarDate
' Display the installation date using the FILETIME format.
MsgBox "Full installation date (FILETIME format) is " _
& dateTime.GetFileTime
next
Set datetime = Nothing
В следующем примере показано, как создать объект SWbemDateTime , сохранить значение даты в объекте, отобразить дату как локальное и скоординированное универсальное время (UTC) и сохранить значение в только что созданном классе и свойстве. Дополнительные сведения о константе wbemCimtypeDatetime см. в разделе WbemCimtypeEnum.
' Create an SWbemDateTime object.
Set dateTime = CreateObject("WbemScripting.SWbemDateTime")
' Set the value
Const wbemCimTypeDatetime = 101
' Construct a datetime value using the intrinsic VBScript CDate
' function interpreting this as a local date/time in
' the Pacific time zone (-8 hrs GMT). Convert to CIM datetime
' using SetVarDate method. The year defaults to current year.
dateTime.SetVarDate (CDate ("January 20 11:56:32"))
' The value in dateTime displays as
' 20000120195632.000000-480. This is the equivalent time
' in GMT with the specified offset for PST of -8 hrs.
MsgBox "CIM datetime " & dateTime
' The value now displays as B=0/2000 11:56:32 AM because the
' parameter contains the default TRUE value causing the value to be
' interpreted as a local time.
MsgBox "Local datetime " & dateTime.GetVarDate ()
' The value now displays as B=0/2000 7:56:32 PM because the
' parameter value is FALSE, which indicates a GMT time.
' non-local time.
MsgBox "Datetime in GMT " & dateTime.GetVarDate (false)
' Create a new class and add a DateTime property value.
' SWbemServices.Get returns an empty SWbemObject
' which can become a new class. SWbemObject.Path_ returns an
' SWbemObjectPath object.
set NewObject = GetObject("winmgmts:root\default").Get
NewObject.Path_.Class = "NewClass"
' Add a new property named "InterestingDate" to the NewObject class
' and define its datatype as a CIM datetime value.
NewObject.Properties_.Add "InterestingDate", wbemCimtypeDatetime
' Set the new value of the SWbemDateTime object in the InterestingDate
' property.
NewObject.InterestingDate = dateTime.Value
MsgBox "Datetime in new object " & NewObject.InterestingDate
' Write the new class (named "NewClass") containing
' the SWbemDateTime object to the repository.
NewObject.Put_
WScript.Echo "NewClass is now in WMI repository"
' Clean up the example by deleting the new class from the repository
NewObject.Delete_
В следующем примере кода скрипта показано, как использовать объект SWbemDateTime для изменения значения интервала для свойства, считываемого из репозитория WMI.
' Construct an interval value of 100 days, 1 hour, and 3 seconds.
dateTime.IsInterval = true
dateTime.Day = 100
dateTime.Hours = 1
dateTime.Seconds = 3
' The datetime displays as 00000100010003.000000:000.
MsgBox "Constructed interval value " & datetime
' Retrieve an empty WMI object and add a datetime property.
Const wbemCimTypeDatetime = 101
Set NewObject = GetObject("winmgmts:root\default").Get
NewObject.Path_.Class = "Empty"
NewObject.Properties_.Add "InterestingDate", wbemCimtypeDatetime
' Set the new value in the property and update.
NewObject.InterestingDate = dateTime.Value
MsgBox "NewObject.InterestingDate = " & NewObject.InterestingDate
' Write the new SWbemDateTime object to the repository.
NewObject.Put_
' Delete the object.
NewObject.Delete_
В следующем примере кода скрипта показано, как использовать объект SWbemDate для чтения значения FILETIME .
' Create a new datetime object.
Set datetime = CreateObject("WbemScripting.SWbemDateTime")
' Set from a FILETIME value (non-local).
' Assume a timezone -7 hrs. GMT.
MsgBox "FILETIME value " & "126036951652030000"
datetime.SetFileTime "126036951652030000", false
' Displays as 5/24/2000 7:26:05 PM.
MsgBox "GMT time " & dateTime.GetVarDate
' Set from a FILETIME value (local).
datetime.SetFileTime "126036951652030000"
' Displays as 5/25/2000 2:26:05 AM.
MsgBox "Same value in local time " & dateTime.GetVarDate
Set datetime = Nothing
Следующий код PowerShell создает экземпляр объекта SWbemDateTime, извлекает дату установки ОС и преобразует дату в другой формат.
# Create swbemdatetime object
$datetime = New-Object -ComObject WbemScripting.SWbemDateTime
# Get OS installation time and assign to datetime object
$os = Get-WmiObject -Class Win32_OperatingSystem
$dateTime.Value = $os.InstallDate
# Now display the time
"This OS was installed in the year {0}" -f $dateTime.Year
"Full installation date (VT_DATE format) is {0}" -f $dateTime.GetVarDate()
"Full installation date (FILETIME format) is {0}" -f $dateTime.GetFileTime()
Следующий код PowerShell преобразует код в формат, готовый к использованию поставщиком CIM.
$time = (Get-Date)
$objScriptTime = New-Object -ComObject WbemScripting.SWbemDateTime
$objScriptTime.SetVarDate($time)
$cimTime = $objScriptTime.Value
Требования
Требование | Значение |
---|---|
Минимальная версия клиента |
Windows Vista |
Минимальная версия сервера |
Windows Server 2008 |
Header |
|
Библиотека типов |
|
DLL |
|
CLSID |
CLSID_SWbemDateTime |
IID |
IID_ISWbemDateTime |