SWbemDateTime, objet Wbemdisp.h

L’objet SWbemDateTime est un objet d’assistance permettant d’analyser et de définir des valeurs datetimeCIM (Common Information Model). Il joue un rôle similaire à SWbemObjectPath, qui fournit une assistance pour mettre en forme et interpréter les chemins d’accès aux objets. Vous pouvez utiliser l’appel VBScript CreateObject pour créer l’objet SWbemDateTime.

Un objet SWbemDateTime peut être initialisé à partir de et mis en forme dans des valeursVT_DATE ou FILETIME à l’aide de méthodes sur l’objet . À l’aide des propriétés de l’objet, la valeur peut être analysée en composant année, mois, jour, heure, minutes, secondes ou microsecondes. L’objet SWbemDateTime peut être mis en forme en valeurs locales ou utc (Temps universel coordonné). Pour plus d'informations, consultez le format de date et d'heure.

SWbemDateTime est le seul objet de script WMI (Windows Management Instrumentation) marqué comme sécurisé pour l’initialisation et les scripts s’exécutant sur des pages HTML dans Internet Explorer.

Membres

L’objet SWbemSink présente les types de membres suivants :

Méthodes

Le SWbemDateTime a ces méthodes.

Méthode Description
GetFileTime Convertit une date et une heure FILETIME , exprimées sous forme de BSTR, au format WMI DATETIME.
GetVarDate Convertit une valeur de date et d’heure au format WMI DATETIME en VT_DATE.
SetFileTime Convertit un format WMIDATETIME en date et heure FILETIME , exprimées en BSTR.
SetVarDate Convertit une date et une heure VT_DATE mises en forme en date et heure WMIDATETIME.

Propriétés

L’objet SWbemDateTime est doté des propriétés suivantes.

Propriété Type d’accès Description
Jour
Lecture/écriture
Composant day d’une valeur datetime CIM.
DaySpecified
Lecture/écriture
Indique si le jour est spécifié ou laissé en tant que caractère générique.
Heures
Lecture/écriture
Composant day d’une valeur datetime CIM.
HoursSpecified
Lecture/écriture
Indique si l’heure est spécifiée ou laissée en tant que caractère générique.
IsInterval
Lecture/écriture
Indique qu’au moins un composant de la datetime CIM représente un intervalle plutôt qu’une date.
Microsecondes
Lecture/écriture
Composant de microsecondes d’une valeur datetime CIM.
MicrosecondsSpecified
Lecture/écriture
Indique si le composant microsecondes est spécifié ou laissé en tant que caractère générique.
Minutes
Lecture/écriture
Composant day d’une valeur datetime CIM.
MinutesSpecified
Lecture/écriture
Indique si le composant minutes est spécifié ou laissé en tant que caractère générique.
Month
Lecture/écriture
Composant day d’une valeur datetime CIM.
MonthSpecified
Lecture/écriture
Indique si le mois est spécifié ou laissé en tant que caractère générique.
Secondes
Lecture/écriture
Composant day d’une valeur datetime CIM.
SecondsSpecified
Lecture/écriture
Indique si le composant secondes est spécifié ou laissé en tant que caractère générique.
UTC
Lecture/écriture
Composant day d’une valeur datetime CIM.
UTCSpecified
Lecture/écriture
Indique si le composant UTC est spécifié ou laissé en tant que caractère générique.
Valeur
Lecture/écriture
Valeur datetime CIM complète.
Year
Lecture/écriture
Composant day d’une valeur datetime CIM.
YearSpecified
Lecture/écriture
Indique si l’année est spécifiée ou laissée en tant que caractère générique.

Notes

WMI enregistre les horodatages au format utc (universal time coordonnée). UTC n’est pas le format utilisé par la plupart des développeurs et administrateurs informatiques. Par conséquent, un problème courant consiste à déterminer comment traduire utc en quelque chose de plus lisible. Pour plus d’informations sur l’utilisation d’UTC, consultez Tâches WMI : Dates et heures et Utilisation des dates et des heures à l’aide de WMI. Vous pouvez également lire le blog It s About Time (Oh, and About Dates, Too) pour plus d’informations.

Tout champ numérique peut avoir une valeur générique si la propriété IsInterval a la valeur FALSE. Les champs avec des valeurs génériques contiennent des astérisques dans le champ entier.

Chaque propriété, par exemple Day, a une valeur booléenne spécifiée correspondante, telle que DaySpecified. Lorsque DaySpecified a la valeur FALSE, la valeur est interprétée comme un intervalle plutôt qu’un nombre compris entre 01 et 31. Si un intervalle est utilisé n’importe où dans la valeur datetime CIM, IsInterval est également défini sur TRUE. La valeur par défaut est qu’une valeur datetime CIM contienne une date plutôt qu’un ou plusieurs intervalles.

Par exemple, si SWbemDateTime.DaySpecified a la valeur TRUE, SWbemDateTime.Value inclut la valeur actuelle de SWbemDateTime.Day, sinon il s’agit d’une valeur générique. La propriété IsInterval a la valeur FALSE dans les deux cas.

Exemples

L’exemple de code de script suivant montre comment utiliser un objet SWbemDateTime pour analyser une valeur de propriété datetime lue à partir du référentiel WMI, la propriété InstallDate dans 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

L’exemple suivant montre comment créer un objet SWbemDateTime , stocker une valeur de date dans l’objet, afficher la date en temps universel local et coordonné (UTC) et stocker la valeur dans une classe et une propriété nouvellement créées. Pour plus d’informations sur la constante wbemCimtypeDatetime, consultez 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_

L’exemple de code de script suivant montre comment utiliser un objet SWbemDateTime pour modifier une valeur d’intervalle sur une propriété lue à partir du référentiel 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_

L’exemple de code de script suivant montre comment utiliser un objet SWbemDate pour lire une valeur 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

Le code PowerShell suivant crée une instance d’un objet SWbemDateTime, récupère la date d’installation du système d’exploitation et convertit la date dans un autre 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() 

Le code PowerShell suivant traduit le code dans un format prêt à être consommé par un fournisseur CIM.

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

Spécifications

Condition requise Valeur
Client minimal pris en charge
Windows Vista
Serveur minimal pris en charge
Windows Server 2008
En-tête
Wbemdisp.h
Bibliothèque de types
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemDateTime
IID
IID_ISWbemDateTime

Voir aussi

WbemCimtypeEnum

DATETIME

Objets de l'API de script