Oggetto SWbemDateTime
L'oggetto SWbemDateTime è un oggetto helper per analizzare e impostare i valori datetime di Common Information Model (CIM). Svolge un ruolo simile a SWbemObjectPath, che fornisce assistenza per formattare e interpretare i percorsi degli oggetti. È possibile utilizzare la chiamata VBScript CreateObject per creare l'oggetto SWbemDateTime .
Un oggetto SWbemDateTime può essere inizializzato da e formattato in valori VT_DATE o FILETIME usando metodi sull'oggetto . Usando le proprietà dell'oggetto, il valore può essere analizzato in anno, mese, giorno, ora, minuti, secondi o microsecondi del componente. L'oggetto SWbemDateTime può essere formattato in valori locali o UTC (Coordinated Universal Time). Per altre informazioni, vedere Formato di data e ora.
SWbemDateTime è l'unico oggetto scripting di Strumentazione gestione Windows (WMI) contrassegnato come sicuro per l'inizializzazione e gli script in esecuzione nelle pagine HTML in Internet Explorer.
Membri
L'oggetto SWbemDateTime ha questi tipi di membri:
Metodi
L'oggetto SWbemDateTime dispone di questi metodi.
Metodo | Descrizione |
---|---|
GetFileTime | Converte una data e un'ora FILETIME , espresse come BSTR, in un formato DATETIME WMI. |
GetVarDate | Converte un valore di data e ora in formato DATETIME WMI in un VT_DATE. |
SetFileTime | Converte un formato DATETIME WMI in una data e un'ora FILETIME , espressa come BSTR. |
SetVarDate | Converte una data e un'ora formattate VT_DATE in UN VALORE DATETIME WMI. |
Proprietà
L'oggetto SWbemDateTime ha queste proprietà.
Proprietà | Tipo di accesso | Descrizione |
---|---|---|
Giorno |
Lettura/Scrittura |
Componente giorno di un valore datetime CIM. |
DaySpecified |
Lettura/Scrittura |
Indica se il giorno viene specificato o lasciato come carattere jolly. |
Hours |
Lettura/Scrittura |
Ore del componente giorno di un valore datetime CIM. |
HoursSpecified |
Lettura/Scrittura |
Indica se l'ora viene specificata o lasciata come carattere jolly. |
IsInterval |
Lettura/Scrittura |
Indica che almeno un componente di CIM datetime rappresenta un intervallo anziché una data. |
Microseconds |
Lettura/Scrittura |
Componente microsecondi di un valore datetime CIM. |
MicrosecondsSpecified |
Lettura/Scrittura |
Indica se il componente microsecondi viene specificato o lasciato come carattere jolly. |
Minuti |
Lettura/Scrittura |
Componente minuti di un valore datetime CIM. |
MinutesSpecified |
Lettura/Scrittura |
Indica se il componente minuti viene specificato o lasciato come carattere jolly. |
Month |
Lettura/Scrittura |
Componente month di un valore datetime CIM. |
MonthSpecified |
Lettura/Scrittura |
Indica se il mese viene specificato o lasciato come carattere jolly. |
Secondi |
Lettura/Scrittura |
Componente secondi di un valore datetime CIM. |
SecondsSpecified |
Lettura/Scrittura |
Indica se il componente secondi viene specificato o lasciato come carattere jolly. |
UTC |
Lettura/Scrittura |
Componente UTC di un valore datetime CIM. |
UTCSpecified |
Lettura/Scrittura |
Indica se il componente UTC viene specificato o lasciato come carattere jolly. |
Valore |
Lettura/Scrittura |
Valore datetime CIM completo. |
Year |
Lettura/Scrittura |
Componente dell'anno di un valore datetime CIM. |
YearSpecified |
Lettura/Scrittura |
Indica se l'anno viene specificato o lasciato come carattere jolly. |
Commenti
WMI registra i timestamp in formato UTC (Universal Time Coordinate). UTC non è il formato usato dalla maggior parte degli sviluppatori e degli amministratori IT. Di conseguenza, un problema comune consiste nel determinare come tradurre utc in qualcosa di più leggibile. Per altre informazioni sull'utilizzo delle ore UTC, vedere Attività WMI: date e ore e utilizzo di date e ore tramite WMI. È anche possibile leggere il post di blog It s About Time (Oh, and About Dates, Too) per ulteriori informazioni.
Qualsiasi campo numerico può avere un valore jolly se la proprietà IsInterval è impostata su FALSE. I campi con valori jolly contengono asterischi nell'intero campo.
Ogni proprietà, ad esempio Day, ha un valore booleano specificato corrispondente, ad esempio DaySpecified. Quando DaySpecified è FALSE, il valore viene interpretato come un intervallo anziché un numero compreso tra 01 e 31. Se viene usato un intervallo in qualsiasi punto del valore datetime CIM, IsInterval viene impostato anche su TRUE. Il valore predefinito è per un valore datetime CIM in modo che contenga una data anziché uno o più intervalli.
Ad esempio, se SWbemDateTime.DaySpecified è TRUE, SWbemDateTime.Value include il valore corrente di SWbemDateTime.Day, in caso contrario è un valore con caratteri jolly. La proprietà IsInterval è FALSE in entrambi i casi.
Esempio
Nell'esempio di codice script seguente viene illustrato come usare un oggetto SWbemDateTime per analizzare un valore di proprietà datetime letto dal repository WMI, la proprietà InstallDate in 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
Nell'esempio seguente viene illustrato come creare un oggetto SWbemDateTime , archiviare un valore di data nell'oggetto, visualizzare la data come ora UTC (Coordinated Universal Time) e archiviare il valore in una classe e una proprietà appena creata. Per altre informazioni sulla costante wbemCimtypeDatetime, vedere 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_
Nell'esempio di codice di script seguente viene illustrato come usare un oggetto SWbemDateTime per modificare un valore di intervallo in una proprietà letti dal repository 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_
Nell'esempio di codice script seguente viene illustrato come usare un oggetto SWbemDate per leggere un valore 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
Il codice di PowerShell seguente crea un'istanza di un oggetto SWbemDateTime, recupera la data di installazione del sistema operativo e converte la data in un formato diverso
# 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()
Il codice di PowerShell seguente converte il codice in un formato pronto per essere usato da un provider CIM.
$time = (Get-Date)
$objScriptTime = New-Object -ComObject WbemScripting.SWbemDateTime
$objScriptTime.SetVarDate($time)
$cimTime = $objScriptTime.Value
Requisiti
Requisito | Valore |
---|---|
Client minimo supportato |
Windows Vista |
Server minimo supportato |
Windows Server 2008 |
Intestazione |
|
Libreria dei tipi |
|
DLL |
|
CLSID |
CLSID_SWbemDateTime |
IID |
IID_ISWbemDateTime |