Objeto SWbemDateTime
El objeto SWbemDateTime es un objeto auxiliar para analizar y establecer valores datetime del Modelo de información común (CIM). Desempeña un papel similar a SWbemObjectPath, que proporciona ayuda para dar formato e interpretar las rutas de acceso a objetos. Puede usar la llamada CreateObject de VBScript para crear el objeto SWbemDateTime.
Un objeto SWbemDateTime se puede inicializar desde valores de VT_DATE o FILETIME utilizando métodos en el objeto, y se le puede dar formato del mismo modo. Utilizando las propiedades del objeto, el valor puede analizarse en componentes de año, mes, día, hora, minutos, segundos o microsegundos. Se puede dar formato al objeto SWbemDateTime en valores locales o de hora universal coordinada (UTC). Para obtener más información, vea Formato de fecha y hora.
SWbemDateTime es el único objeto de scripting de Instrumental de administración de Windows (WMI) que está marcado como seguro para la inicialización y los scripts que se ejecutan en páginas HTML en Internet Explorer.
Miembros
El objeto SWbemMethod contiene estos tipos de miembros:
Métodos
El objeto SWbemDateTime tiene estos métodos.
Método | Descripción |
---|---|
GetFileTime | Convierte una fecha y hora FILETIME , expresada como BSTR, en un formato DATETIME de WMI. |
GetVarDate | Convierte un valor de fecha y hora con formato DATETIME de WMI en un VT_DATE. |
SetFileTime | Convierte un formato DATETIME de WMI en una fecha y hora FILETIME, expresada como BSTR. |
SetVarDate | Convierte una fecha y hora con formato VT_DATE en un objeto DATETIME de WMI. |
Propiedades
El objeto SWbemDateTime tiene estas propiedades.
Propiedad | Tipo de acceso | Descripción |
---|---|---|
Día |
Lectura/escritura |
El componente de día de un valor datetime de CIM. |
DaySpecified |
Lectura/escritura |
Indica si el día se especifica o se deja como carácter comodín. |
Hours |
Lectura/escritura |
Horas del componente de día de un valor datetime de CIM. |
HoursSpecified |
Lectura/escritura |
Indica si la hora se especifica o se deja como carácter comodín. |
IsInterval |
Lectura/escritura |
Indica que al menos un componente del objeto datetime de CIM representa un intervalo en lugar de una fecha. |
Microsegundos |
Lectura/escritura |
El componente de microsegundos de un valor datetime de CIM. |
MicrosecondsSpecified |
Lectura/escritura |
Indica si el componente de microsegundos se especifica o se deja como carácter comodín. |
Minutos |
Lectura/escritura |
El componente de minutos de un valor datetime de CIM. |
MinutesSpecified |
Lectura/escritura |
Indica si el componente de minutos se especifica o se deja como carácter comodín. |
Month |
Lectura/escritura |
EL componente de mes de un valor datetime de CIM. |
MonthSpecified |
Lectura/escritura |
Indica si el mes se especifica o se deja como carácter comodín. |
Segundos |
Lectura/escritura |
El componente de segundos de un valor datetime de CIM. |
SecondsSpecified |
Lectura/escritura |
Indica si el componente de segundos se especifica o se deja como carácter comodín. |
UTC |
Lectura/escritura |
El componente UTC de un valor datetime de CIM. |
UTCSpecified |
Lectura/escritura |
Indica si el componente de UTC se especifica o se deja como carácter comodín. |
Value |
Lectura/escritura |
El valor datetime de CIM completo. |
Year |
Lectura/escritura |
El componente de año de un valor datetime de CIM. |
YearSpecified |
Lectura/escritura |
Indica si el año se especifica o se deja como carácter comodín. |
Comentarios
WMI registra las marcas de tiempo en formato de coordenadas horarias universales (UTC). UTC no es el formato que usan la mayoría de los desarrolladores y administradores de TI. Por lo tanto, un problema común consiste en determinar cómo traducir UTC en algo más legible. Para obtener más información sobre cómo trabajar con UTC, vea Tareas de WMI: fechas y horas y Trabajo con fechas y horas mediante WMI. También puede leer la entrada de blog Es cuestión de horas (pero también de fechas) para obtener más información.
Cualquier campo numérico puede tener un valor comodín si la propiedad IsInterval está establecida en FALSE. Los campos con valores comodín contienen asteriscos en todo el campo.
Cada propiedad, por ejemplo Day, tiene un valor booleano especificado correspondiente, como DaySpecified. Cuando DaySpecified es FALSE, el valor se interpreta como un intervalo en lugar de un número entre 01 y 31. Si se usa un intervalo en cualquier lugar del valor datetime de CIM, IsInterval también se establece en TRUE. De manera predeterminada, un valor datetime de CIM contiene una fecha en lugar de uno o más intervalos.
Por ejemplo, si SWbemDateTime.DaySpecified es TRUE, SWbemDateTime.Value incluye el valor actual de SWbemDateTime.Day; de lo contrario, es un valor comodín. La propiedad IsInterval es FALSE en cualquier caso.
Ejemplos
En el siguiente ejemplo de código de script se muestra cómo usar un objeto SWbemDateTime para analizar un valor de propiedad datetime leído del repositorio de WMI, la propiedad InstallDate en 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
En el ejemplo siguiente se muestra cómo crear un objeto SWbemDateTime, almacenar un valor de fecha en el objeto, mostrar la fecha como hora universal coordinada y local (UTC) y almacenar el valor en una clase y propiedad recién creadas. Para obtener más información sobre la constante wbemCimtypeDatetime, consulte 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_
En el ejemplo de código de script siguiente se muestra cómo usar un objeto SWbemDateTime para modificar un valor de intervalo en una propiedad que se lee desde el repositorio 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_
En el ejemplo de código de script siguiente se muestra cómo usar un objeto SWbemDate para leer un valor 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
El siguiente código de PowerShell crea una instancia de un objeto SWbemDateTime, recupera la fecha de instalación del sistema operativo y convierte la fecha en un formato diferente.
# 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()
El siguiente código de PowerShell traduce el código en un formato listo para que lo consuma un proveedor de CIM.
$time = (Get-Date)
$objScriptTime = New-Object -ComObject WbemScripting.SWbemDateTime
$objScriptTime.SetVarDate($time)
$cimTime = $objScriptTime.Value
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible |
Windows Vista |
Servidor mínimo compatible |
Windows Server 2008 |
Encabezado |
|
Biblioteca de tipos |
|
Archivo DLL |
|
CLSID |
CLSID_SWbemDateTime |
IID |
IID_ISWbemDateTime |