SWbemDateTime-Objekt

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

Ein SWbemDateTime-Objekt kann mithilfe von Methoden für das Objekt initialisiert und in VT _ DATE- oder FILETIME-Werten formatiert werden. Mithilfe der Eigenschaften des -Objekts kann der Wert in Komponentenjahr, Monat, Tag, Stunde, Minuten, Sekunden oder Mikrosekunden analysiert werden. Das SWbemDateTime-Objekt kann entweder in lokale oder koordinierte Weltzeit (UTC) formatiert werden. Weitere Informationen finden Sie unter Datums- und Uhrzeitformat.

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

Members

Das SWbemDateTime-Objekt verfügt über die folgenden Membertypen:

Methoden

Das SWbemDateTime-Objekt verfügt über diese Methoden.

Methode BESCHREIBUNG
GetFileTime Konvertiert ein FILETIME-Datum und eine FILETIME-Uhrzeit, ausgedrückt als BSTR, in ein WMI-DATETIME-Format.
GetVarDate Konvertiert einen datums- und uhrzeitformatierten WMI DATETIME-Wert in einen VT _ DATE-Wert.
SetFileTime Konvertiert ein WMI-DATETIME-Format in ein FILETIME-Datum und eine FILETIME-Uhrzeit, ausgedrückt als BSTR.
SetVarDate Konvertiert ein Datum und eine Uhrzeit im VT _ DATE-Format in einen WMI-DATETIME-.

Eigenschaften

Das SWbemDateTime-Objekt verfügt über diese Eigenschaften.

Eigenschaft Zugriffstyp BESCHREIBUNG
Tag
Lesen/Schreiben
Die Tageskomponente eines CIM-datetime-Werts.
DaySpecified
Lesen/Schreiben
Gibt an, ob der Tag als Platzhalter angegeben oder verlassen wird.
Stunden
Lesen/Schreiben
Die Stunden der Tageskomponente eines CIM-datetime-Werts.
HoursSpecified
Lesen/Schreiben
Gibt an, ob die Stunde als Platzhalter angegeben oder übrig gelassen wird.
IsInterval
Lesen/Schreiben
Gibt an, dass mindestens eine Komponente von CIM datetime ein Intervall und kein Datum darstellt.
Mikrosekunden
Lesen/Schreiben
Die Mikrosekundenkomponente eines CIM-datetime-Werts.
MicrosecondsSpecified
Lesen/Schreiben
Gibt an, ob die Mikrosekundenkomponente als Platzhalter angegeben oder übrig gelassen wird.
Minuten
Lesen/Schreiben
Die Minutenkomponente eines CIM-datetime-Werts.
MinutesSpecified
Lesen/Schreiben
Gibt an, ob die Minutenkomponente als Platzhalter angegeben oder übrig gelassen wird.
Monat
Lesen/Schreiben
Die Monatskomponente eines CIM-datetime-Werts.
MonthSpecified
Lesen/Schreiben
Gibt an, ob der Monat als Platzhalter angegeben oder übrig gelassen wird.
Sekunden
Lesen/Schreiben
Die Sekundenkomponente eines CIM-datetime-Werts.
SecondsSpecified
Lesen/Schreiben
Gibt an, ob die Sekundenkomponente als Platzhalter angegeben oder übrig gelassen wird.
UTC
Lesen/Schreiben
Die UTC-Komponente eines CIM-datetime-Werts.
UTCSpecified
Lesen/Schreiben
Gibt an, ob die UTC-Komponente als Platzhalter angegeben oder verlassen wird.
Wert
Lesen/Schreiben
Der vollständige DATETIME-Wert.
Jahr
Lesen/Schreiben
Die Jahreskomponente eines CIM-datetime-Werts.
YearSpecified
Lesen/Schreiben
Gibt an, ob das Jahr als Platzhalter angegeben oder übrig gelassen wird.

Bemerkungen

WMI zeichnet Zeitstempel im UTC-Format (Universal Time Coordinate) auf. UTC ist nicht das Format, das die meisten Entwickler und IT-Administratoren verwenden. Daher besteht ein häufiges Problem in der Bestimmung, wie UTC in etwas besser lesbares übersetzt wird. Weitere Informationen zum Arbeiten mit UTC finden Sie unter WMI Tasks: Dates and Times (WMI-Aufgaben: Datums- und Zeitangaben) und Working with Dates and Times using WMI (Arbeiten mit Datums- und Zeitangaben mit WMI). Weitere Informationen finden Sie auch in den Blogbeiträgen It es About Time (Oh, and About Dates, Too) und How Can I Subtract a Specified Number of Days from a UTC Value? (Wie kann ich eine angegebene Anzahl von Tagen von einem UTC-Wert subtrahieren?).

Jedes numerische Feld kann einen Platzhalterwert haben, wenn die IsInterval-Eigenschaft auf FALSE festgelegt ist. Felder mit Platzhalterwerten enthalten Sternchen im gesamten Feld.

Jede Eigenschaft, z. B. Day,verfügt über einen entsprechenden angegebenen booleschen Wert, z. B. DaySpecified. Wenn DaySpecified auf FALSE festgelegt ist, wird der Wert als Intervall und nicht als Zahl zwischen 01 und 31 interpretiert. Wenn ein Intervall an einer beliebigen Stelle im DATETIME-Wert von CIM verwendet wird, wird IsInterval ebenfalls auf TRUE festgelegt. Der Standardwert ist, dass ein CIM-datetime-Wert ein Datum statt eines oder mehrere Intervalle enthält.

Wenn SWbemDateTime.DaySpecified beispielsweise TRUE ist, enthält SWbemDateTime.Value den aktuellen Wert von SWbemDateTime.Day,andernfalls handelt es sich um einen Platzhalterwert. Die IsInterval-Eigenschaft ist in beiden Fällen FALSE.

Beispiele

Das folgende Skriptcodebeispiel zeigt, wie sie ein SWbemDateTime-Objekt verwenden, um einen datetime-Eigenschaftswert zu analysieren, der aus dem WMI-Repository gelesen wird, der 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 lokal und koordinierte Weltzeit (UTC) anzeigen und den Wert in einer neu erstellten Klasse und Eigenschaft speichern. Weitere Informationen zur Konstante 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_

Das folgende Skriptcodebeispiel zeigt, wie sie ein SWbemDateTime-Objekt verwenden, um einen Intervallwert für eine Eigenschaft zu ändern, die aus dem WMI-Repository gelesen wird.

' 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 zum Lesen eines FILETIME-Werts verwendet wird.

' 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

Requirements (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