Objeto SWbemDateTime
O objeto SWbemDateTime é um objeto auxiliar para analisar e definir valores datetime do modelo CIM. Ele desempenha uma função semelhante a SWbemObjectPath, que fornece assistência para formatar e interpretar caminhos de objeto. É possível usar a chamada CreateObject do VBScript para criar o objeto SWbemDateTime.
Um objeto SWbemDateTime pode ser inicializado e formatado nos valores VT_DATE ou FILETIME usando métodos no objeto. Usando propriedades do objeto, o valor pode ser analisado em ano, mês, dia, hora, minutos, segundos ou microssegundos do componente. O objeto SWbemDateTime pode ser formatado nos valores locais ou UTC (Tempo Universal Coordenado). Para obter mais informações, consulte Formato de data e hora.
SWbemDateTime é o único objeto de script WMI (Instrumentação de Gerenciamento do Windows) marcado como seguro para inicialização e scripts em execução em páginas HTML no Internet Explorer.
Membros
O objeto SWbemDateTime tem estes tipos de membros:
Métodos
O objeto SWbemDateTime tem estes métodos.
Método | Descrição |
---|---|
GetFileTime | Converte uma data e hora FILETIME, expressas como um BSTR, em um formato DATETIME do WMI. |
GetVarDate | Converte um valor de data e hora formatado DATETIME do WMI em um VT_DATE. |
SetFileTime | Converte um formato DATETIME do WMI em uma data e hora FILETIME, expressas como um BSTR. |
SetVarDate | Converte data e hora formatadas VT_DATE em um DATETIME do WMI. |
Propriedades
O objeto SWbemDateTime tem estas propriedades.
Propriedade | Tipo de acesso | Descrição |
---|---|---|
Day |
Leitura/gravação |
O componente de dia de um valor datetime do CIM. |
DaySpecified |
Leitura/gravação |
Indica se o dia é especificado ou deixado como curinga. |
Hours |
Leitura/gravação |
O componente de horas do dia de um valor datetime do CIM. |
HoursSpecified |
Leitura/gravação |
Indica se a hora é especificada ou deixada como um curinga. |
IsInterval |
Leitura/gravação |
Indica que pelo menos um componente datetime do CIM representa um intervalo em vez de uma data. |
Microssegundos |
Leitura/gravação |
O componente de microssegundos de um valor datetime do CIM. |
MicrosecondsSpecified |
Leitura/gravação |
Indica se o componente de microssegundos é especificado ou deixado como curinga. |
Minutes |
Leitura/gravação |
O componente de minutos de um valor datetime do CIM. |
MinutesSpecified |
Leitura/gravação |
Indica se o componente de minutos é especificado ou deixado como curinga. |
Month |
Leitura/gravação |
O componente de mês de um valor datetime do CIM. |
MonthSpecified |
Leitura/gravação |
Indica se o mês é especificado ou deixado como um curinga. |
Segundos |
Leitura/gravação |
O componente de segundos de um valor datetime do CIM. |
SecondsSpecified |
Leitura/gravação |
Indica se o componente de segundos é especificado ou deixado como curinga. |
UTC |
Leitura/gravação |
O componente de UTC de um valor datetime do CIM. |
UTCSpecified |
Leitura/gravação |
Indica se o componente de UTC é especificado ou deixado como curinga. |
Valor |
Leitura/gravação |
O valor datetime completo do CIM. |
Year |
Leitura/gravação |
O componente de ano de um valor datetime do CIM. |
YearSpecified |
Leitura/gravação |
Indica se o ano é ou não especificado ou deixado como um curinga. |
Comentários
O WMI registra carimbos de data/hora no formato UTC (Tempo Universal Coordenado). O UTC não é o formato que a maioria dos desenvolvedores e administradores de TI usam. Portanto, um problema comum é determinar como converter o UTC em algo mais legível. Para obter mais informações sobre como trabalhar com UTC, consulte Tarefas do WMI: datas e horas e Trabalhar com datas e horas usando o WMI. Você também pode ler a postagem no blog It s About Time (Oh, and About Dates, Too) para obter informações adicionais.
Qualquer campo numérico poderá ter um valor curinga se a propriedade IsInterval estiver definida como FALSE. Campos com valores curinga contêm asteriscos em todo o campo.
Cada propriedade (por exemplo, Day) tem um valor booliano especificado correspondente, como DaySpecified. Quando DaySpecified é FALSE, o valor é interpretado como um intervalo em vez de um número entre 01 e 31. Se um intervalo for usado em qualquer lugar no valor datetime do CIM, IsInterval também será definido como TRUE. O padrão é que um valor datetime do CIM contenha uma data em vez de um ou mais intervalos.
Por exemplo, se SWbemDateTime.DaySpecified for TRUE, SWbemDateTime.Value incluirá o valor atual de SWbemDateTime.Day; caso contrário, será um valor curinga. A propriedade IsInterval é FALSE em ambos os casos.
Exemplos
O exemplo de código de script a seguir mostra como usar um objeto SWbemDateTime para analisar um valor de propriedade datetime lido do repositório WMI, a propriedade InstallDate no 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
O exemplo a seguir mostra como criar um objeto SWbemDateTime, armazenar um valor de data no objeto, exibir a data como local e UTC (Tempo Universal Coordenado) e armazenar o valor em uma classe e propriedade recém-criadas. Para obter mais informações sobre a 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_
O exemplo de código de script a seguir mostra como usar um objeto SWbemDateTime para modificar um valor de intervalo em uma propriedade lida no repositório 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_
O exemplo de código de script a seguir mostra como usar um objeto SWbemDate para ler um 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
O código do PowerShell a seguir cria uma instância de um objeto SWbemDateTime, recupera a data de instalação do sistema operacional e converte a data em um 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()
O código do PowerShell a seguir converte o código em um formato pronto para ser consumido por um provedor CIM.
$time = (Get-Date)
$objScriptTime = New-Object -ComObject WbemScripting.SWbemDateTime
$objScriptTime.SetVarDate($time)
$cimTime = $objScriptTime.Value
Requisitos
Requisito | Valor |
---|---|
Cliente mínimo com suporte |
Windows Vista |
Servidor mínimo com suporte |
Windows Server 2008 |
Cabeçalho |
|
Biblioteca de tipos |
|
DLL |
|
CLSID |
CLSID_SWbemDateTime |
IID |
IID_ISWbemDateTime |