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 |
|
| Typbibliothek |
|
| DLL |
|
| CLSID |
CLSID _ SWbemDateTime |
| IID |
IID _ ISWbemDateTime |