SWbemDateTime-Objekt

Das SWbemDateTime-Objekt ist ein Hilfsobjekt zum Analysieren und Festlegen von datetime-Werten gemäß CIM (Common Information Model). Es spielt eine ähnliche Rolle wie SWbemObjectPath, das Unterstützung beim Formatieren und Interpretieren von Objektpfaden bietet. Sie können den VBScript-Aufruf CreateObject verwenden, um das SWbemDateTime-Objekt zu erstellen.

Ein SWbemDateTime-Objekt kann mithilfe von Methoden für das Objekt in VT_DATE- oder FILETIME-Werten initialisiert und formatiert werden. Anhand der Eigenschaften des Objekts kann der Wert in die Komponenten Jahr, Monat, Tag, Stunde, Minuten, Sekunden oder Mikrosekunden zerlegt werden. Das SWbemDateTime-Objekt kann entweder in lokale Zeitwerte oder in UTC-Werte (Coordinated Universal Time) formatiert werden. Weitere Informationen finden Sie unter Format für Datum und Uhrzeit.

SWbemDateTime ist das einzige WMI-Skriptobjekt (Windows Management Instrumentation, Windows-Verwaltungsinstrumentation), das für die Initialisierung und Skripts, die auf HTML-Seiten in Internet Explorer ausgeführt werden, als sicher markiert ist.

Member

Das Objekt SWbemDateTime verfügt über die folgenden Elemente:

Methoden

Das Objekt SWbemDateTime verfügt über die folgenden Methoden.

Methode Beschreibung
GetFileTime Konvertiert ein FILETIME-Datum und eine -Uhrzeit, ausgedrückt als BSTR, in ein WMI DATETIME-Format.
GetVarDate Konvertiert einen WMI DATETIME-formatierten Datums- und Uhrzeitwert in einen VT_DATE-Wert.
SetFileTime Konvertiert ein WMI DATETIME-Format in einen FILETIME-Datums und -Zeitwert, ausgedrückt als BSTR.
SetVarDate Konvertiert ein VT_DATE-formatiertes Datum und eine formatierte Uhrzeit in WMI DATETIME.

Eigenschaften

Das Objekt SWbemDateTime verfügt über die folgenden Eigenschaften.

Eigenschaft Zugriffstyp B
Day
Lesen/Schreiben
Die Tagkomponente eines CIM datetime-Werts.
DaySpecified
Lesen/Schreiben
Legt fest, ob der Tag angegeben oder als Platzhalter belassen wird.
Stunden
Lesen/Schreiben
Die Stunden der Day-Komponente eines CIM datetime-Werts.
HoursSpecified
Lesen/Schreiben
Gibt an, ob die Stunde angegeben oder als Platzhalter belassen wird.
IsInterval
Lesen/Schreiben
Gibt an, dass mindestens eine Komponente des CIM datetime-Werts ein Intervall anstelle eines Datums darstellt.
Mikrosekunden
Lesen/Schreiben
Die Mikrosekundenkomponente eines CIM datetime-Werts.
MicrosecondsSpecified
Lesen/Schreiben
Legt fest, ob die Mikrosekunden-Komponente angegeben oder als Platzhalter belassen wird.
Minuten
Lesen/Schreiben
Die Minutenkomponente eines CIM datetime-Werts.
MinutesSpecified
Lesen/Schreiben
Legt fest, ob die Minutenkomponente angegeben oder als Platzhalter belassen wird.
Month
Lesen/Schreiben
Die Monatkomponente eines CIM datetime-Werts.
MonthSpecified
Lesen/Schreiben
Gibt an, ob der Monat angegeben oder als Platzhalter belassen wird.
Sekunden
Lesen/Schreiben
Die Sekundenkomponente eines CIM datetime-Werts.
SecondsSpecified
Lesen/Schreiben
Legt fest, ob die Sekundenkomponente angegeben oder als Platzhalter belassen wird.
UTC
Lesen/Schreiben
Die UTC-Komponente eines CIM datetime-Werts.
UTCSpecified
Lesen/Schreiben
Legt fest, ob die UTC-Komponente angegeben oder als Platzhalter belassen wird.
Wert
Lesen/Schreiben
Der vollständige CIM datetime-Wert.
Year
Lesen/Schreiben
Die Jahreskomponente eines CIM datetime-Werts.
YearSpecified
Lesen/Schreiben
Legt fest, ob das Jahr angegeben oder als Platzhalter belassen wird.

Bemerkungen

WMI zeichnet Zeitstempel im UTC-Format (Koordinierte Weltzeit) auf. UTC ist jedoch kein Format, das von allen Entwicklern und IT-Administratoren verwenden. Ein häufiges Problem ist daher die Frage, wie UTC in etwas besser Lesbares konvertiert werden kann. Weitere Informationen zum Arbeiten mit UTC finden Sie unter WMI-Aufgaben: Datums- und Uhrzeitangaben und Arbeiten mit Datums- und Uhrzeitangaben mithilfe von WMI. Sie können auch den Blogbeitrag It s About Time (Oh, and About Dates, Too) lesen, um weitere Informationen zu erhalten.

Jedes numerische Feld kann einen Platzhalterwert aufweisen, wenn die IsInterval-Eigenschaft auf FALSE festgelegt ist. Bei Feldern mit Platzhalterwerten wird das gesamte Feld mit Sternchen versehen.

Jede Eigenschaft, z. B. Day, verfügt über einen entsprechenden booleschen Wert, wie DaySpecified. Wenn DaySpecifiedauf FALSE festgelegt ist, wird der Wert als Intervall anstelle einer Zahl zwischen 01 und 31 interpretiert. Wenn ein Intervall an einer beliebigen Stelle im CIM datetime-Wert verwendet wird, dann wird IsInterval ebenfalls auf TRUE festgelegt. Standardmäßig enthält ein CIM-Datetime-Wert ein Datum und nicht ein oder mehrere Intervalle.

Wenn SWbemDateTime.DaySpecified beispielsweise TRUE ist, enthält SWbemDateTime.Value den aktuellen Wert von SWbemDateTime.Day, andernfalls wird ein Platzhalterwert verwendet. Die IsInterval-Eigenschaft ist in beiden Fällen FALSE.

Beispiele

Das folgende Skriptcodebeispiel zeigt, wie Sie ein SWbemDateTime-Objekt zum Parsen eines datetime-Eigenschaftswerts verwenden, der aus dem WMI-Repository gelesen wird, nämlich die InstallDate-Eigenschaft 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

Das folgende Beispiel zeigt, wie Sie ein SWbemDateTime-Objekt erstellen, einen Datumswert im Objekt speichern, das Datum als lokale und koordinierte Weltzeit (UTC) anzeigen und den Wert in einer neu erstellten Klasse und Eigenschaft speichern. Weitere Informationen zur Konstanten wbemCimtypeDatetime finden Sie unter 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_

Im folgenden Skriptcodebeispiel wird gezeigt, wie ein SWbemDateTime-Objekt verwendet wird, um einen Intervallwert für eine Eigenschaft zu ändern, die aus dem WMI-Repository gelesen wurde.

' 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_

Das folgende Skriptcodebeispiel zeigt, wie ein SWbemDate-Objekt verwendet wird, um einen FILETIME-Wert zu lesen.

' 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

Der folgende PowerShell-Code erstellt eine Instanz eines SWbemDateTime-Objekts, ruft das Installationsdatum des Betriebssystems ab und konvertiert das Datum in ein anderes Format.

# 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() 

Der folgende PowerShell-Code übersetzt den Code in ein Format, das von einem CIM-Anbieter verwendet werden kann.

 $time = (Get-Date)
 $objScriptTime = New-Object -ComObject WbemScripting.SWbemDateTime
 $objScriptTime.SetVarDate($time)
 $cimTime = $objScriptTime.Value

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows Vista
Unterstützte Mindestversion (Server)
Windows Server 2008
Header
Wbemdisp.h
Typbibliothek
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemDateTime
IID
IID_ISWbemDateTime

Weitere Informationen

WbemCimtypeEnum

DATETIME

Skripterstellung für API-Objekte