勇芳软件工作室.汉化:  Windows Management Instrumentation > Scripting API for WMI > Scripting API Objects >

SWbemDateTime

Previous pageReturn to chapter overviewNext page

SWbemDateTime对象是一个帮助对象,用于解析和设置公共信息模型(CIM)约会时间值。它起到类似于SWbemObjectPath的作用,它为格式化和解释对象路径提供了帮助。您可以使用VBScript CreateObject调用创建SWbemDateTime对象。

 

SWbemDateTime对象可以使用对象上的方法从VT_DATEFILETIME值初始??化并格式化。使用对象的属性,该值可以解析为组件年,月,日,小时,分,秒或微秒。SWbemDateTime对象可以格式化为本地或协调世界时(UTC)值。有关详细信息,请参阅日期和时间格式.

 

SWbemDateTime是唯一的Windows管理规范(WMI)脚本对象,标记为安全的初始化和脚本在Internet Explorer中的HTML页面上运行。

 

方法

 

SWbemDateTime对象定义了以下方法。

 

方法

描述

SetVarDate

将WMI DATETIME格式化的日期和时间值转换为VT_DATE.

GetVarDate

VT_DATE格式化的日期和时间转换为WMI DATETIME。

SetFileTime

将WMI DATETIME格式转换为FILETIME日期和时间,表示为BSTR.

GetFileTime

FILETIME日期和时间(以BSTR表示)转换为WMI DATETIME格式。

 

属性

 

SWbemDateTime对象定义了以下属性。

 

属性

描述

CIM日期时间值的日期组件。

DaySpecified

指示是指定日期还是作为通配符留下。

小时

CIM日期时间值的时间分量。

HoursSpecified

指示小时是指定还是作为通配符留下。

IsInterval

表示CIM datetime的至少一个组件表示间隔而不是日期。

微秒

CIM datetime值的微秒组件。

MicrosecondsSpecified

指示微秒组件是指定还是作为通配符留下。

分钟

CIM日期时间值的分钟组件。

MinutesSpecified

指示分钟组件是否被指定或作为通配符保留。

CIM日期时间值的月份组件。

MonthSpecified

指示是指定月份还是作为通配符留下。

CIM日期时间值的秒组件。

SecondsSpecified

指示是否指定了秒组件或作为通配符保留。

UTC

CIM日期时间值的UTC分量。

UTCSpecified

指示UTC组件是指定还是作为通配符留下。

完整的CIM datetime值。

CIM日期时间值的年份。

YearSpecified

指示年份是否被指定或作为通配符留下。

 

备注

 

如果IsInterval属性设置为FALSE,则任何数字字段都可以具有通配符值。具有通配符值的字段在整个字段中包含星号。

 

每个属性,例如具有相应的指定布尔值,例如DaySpecified.当DaySpecified为FALSE时,该值被解释为间隔,而不是01和31之间的数字。如果在CIM日期时间值的任何位置使用间隔,则IsInterval也将设置为TRUE.默认值为CIM日期时间值包含日期而不是一个或多个间隔。

 

例如,如果SWbemDateTime.DaySpecified为TRUE,则SWbemDateTime.Value包含当前值SWbemDateTime.Day,否则为通配符值。在这两种情况下IsInterval属性都为FALSE。

 

示例:解析Datetime值

 

以下脚本代码示例显示如何使用SWbemDateTime对象来解析从WMI存储库读取的datetime属性值,Win32_OperatingSystem中的InstallDate属性。

 

'创建一个新的datetime对象。

设置dateTime = CreateObject(“WbemScripting.SWbemDateTime”)

 

'检索包含datetime值的WMI对象。

对于每个os在GetObject(_

 “winmgmts:”)。InstancesOf(“Win32_OperatingSystem”)

 

 'InstallDate属性是CIM_DATETIME。

 MSGBOX os.InstallDate

 dateTime.Value = os.InstallDate

 

 显示安装年份

 MsgBox“此操作系统已安装在”&dateTime.Year

 

 '使用VT_DATE格式显示安装日期。

 MsgBox“完整安装日期(VT_DATE格式)为”_

 &dateTime.GetVarDate

 

 '使用FILETIME格式显示安装日期。

 MsgBox“完整安装日期(FILETIME格式)为”_

 &dateTime.GetFileTime

下一个

设置datetime =没有

 

[PowerBASIC]

 

#COMPILE EXE

#DIM ALL

#INCLUDE "WbemDisp.INC"

 

FUNCTION PBMAIN () AS LONG

 

 LOCAL hr AS LONG

 LOCAL pDatetime AS ISWbemDateTime

 LOCAL pServices AS ISWbemServices

 LOCAL pObjectSet AS ISWbemObjectSet

 LOCAL pEnum AS IEnumVariant

 LOCAL vos AS VARIANT

 LOCAL os AS DISPATCH

 LOCAL vDate AS VARIANT

 LOCAL bstrDate AS WSTRING

 

 ' Create a new datetime object.

 pDateTime = NEWCOM "WbemScripting.SWbemDateTime"

 IF ISNOTHING(pDateTime) THEN EXIT FUNCTION

 

 ' Create an instance of the SWbemServices object

 pServices = WmiGetObject("winmgmts:")

 IF ISNOTHING(pServices) THEN EXIT FUNCTION

 

 TRY

    ' Create an enumerator

    pObjectSet = pServices.InstancesOf("Win32_OperatingSystem")

    IF ISNOTHING(pObjectSet) THEN EXIT FUNCTION

    ' Retrieve a reference to the collection's enumerator

    pEnum = pObjectSet.NewEnum_

    IF ISNOTHING(pEnum) THEN EXIT TRY

    ' Iterate through the collection of objects

    DO

       ' Retrieve a reference to the next object in the collection

       hr = pEnum.Next(1, vos, BYVAL %NULL)

       IF hr <> %S_OK THEN EXIT LOOP

       ' Assign the VT_DISPATCH variant to the object variable

       os = vos

       ' Empty the VT_DISPATCH variant

       vos = EMPTY

       ' The InstallDate property is a CIM_DATETIME.

       OBJECT GET os.InstallDate TO vDate

       ' Set the value of the raw CIM date

       pDatetime.Value = VARIANT$$(vDate)

       ' Display the year of installation.

       STDOUT "This OS was installed in the year " & FORMAT$(pDateTime.Year)

       ' Display the installation date using the VT_DATE format.

       hr = VarBstrFromDate(pDateTime.GetVarDate(), 0, 0, bstrDate)

       STDOUT "Full installation date (VT_DATE format) is " & ACODE$(bstrDate)

       ' Release the object

       os = NOTHING

    LOOP

 CATCH

    STDOUT "Error " & HEX$(OBJRESULT)

    STDOUT WmiGetErrorCodeText(OBJRESULT)

 FINALLY

    ' cleanup

    pEnum = NOTHING

    pObjectSet = NOTHING

 END TRY

 

 ' Cleanup

 pDateTime = NOTHING

 pServices = NOTHING

 

 WAITKEY$

 

END FUNCTION

 

 

示例:从VT_Date设置Datetime值

 

以下示例显示如何创建SWbemDateTime对象,在对象中存储日期值,将日期显示为本地和协调世界时(UTC),并将该值存储在新创建的类和属性中。有关常数wbemCimtypeDatetime的更多信息,请参阅WbemCimtypeEnum.

 

'创建一个SWbemDateTime对象。

设置dateTime = CreateObject(“WbemScripting.SWbemDateTime”)

'设置值

Const wbemCimTypeDatetime = 101

 

'使用内在的VBScript CDate构造一个datetime值

'功能将其解释为本地日期/时间

太平洋时区(GMT)转换为CIM datetime

'使用SetVarDate方法。年份默认为当年。

dateTime.SetVarDate(CDate(“January 20 11:56:32”))

 

'dateTime中的值显示为

' 20000120195632.000000-480.这是相当的时间

'在GMT时间为-8小时的PST指定的偏移量。

MsgBox“CIM datetime”&dateTime

 

'该值现在显示为B = 0/2000 11:56:32 AM,因为

'参数包含导致该值为默认的TRUE值

被解释为当地时间。

MsgBox“Local datetime”&dateTime.GetVarDate()

 

'现在值显示为B = 0/2000 7:56:32 PM,因为

'参数值为FALSE,表示GMT时间。

非本地时间

MsgBox“GMT的日期时间”&dateTime.GetVarDate(false)

 

'创建一个新类并添加一个DateTime属性值。

'SWbemServices.Get返回一个空的SWbemObject

“这可以成为一个新课。SWbemObject.Path_返回一个

'SWbemObjectPath对象。

设置NewObject = GetObject(“winmgmts:root \\ default”)

NewObject.Path_.Class =“NewClass”

 

'添加一个名为“InterestingDate”的新属性到NewObject类

'并将其数据类型定义为CIM datetime值。

NewObject.Properties_.Add“InterestingDate”,wbemCimtypeDatetime

 

'在InterestingDate中设置SWbemDateTime对象的新值

'财产。

NewObject.InterestingDate = dateTime.Value

MsgBox“新对象中的日期时间”&NewObject.InterestingDate

 

'写新的类(名为“NewClass”)包含

'到存储库的SWbemDateTime对象。

NewObject.Put_

WScript.Echo“NewClass现在在WMI存储库”

 

'通过从存储库中删除新的类来清理该示例

NewObject.Delete_

 

示例:设置间隔值

 

以下脚本代码示例显示如何使用SWbemDateTime对象修改从WMI存储库读取的属性上的间隔值。

 

'建立一个100天,1小时和3秒的间隔值。

dateTime.IsInterval = true

dateTime.Day = 100

dateTime.Hours = 1

dateTime.Seconds = 3

 

'datetime显示为00000100010003.0000000000。

MsgBox“构造间隔值”&datetime

 

'检索一个空的WMI对象并添加一个datetime属性。

Const wbemCimTypeDatetime = 101

设置NewObject = GetObject(“winmgmts:root \\ default”)

NewObject.Path_.Class =“空”

NewObject.Properties_.Add“InterestingDate”,wbemCimtypeDatetime

 

'在属性中设置新值并进行更新。

NewObject.InterestingDate = dateTime.Value

MsgBox“NewObject.InterestingDate =”&NewObject.InterestingDate

 

'将新的SWbemDateTime对象写入仓库。

NewObject.Put_

 

'删除对象。

NewObject.Delete_

 

示例:使用FILETIME值

 

以下脚本代码示例显示如何使用SWbemDate对象读取FILETIME值。

 

'创建一个新的datetime对象。

设置datetime = CreateObject(“WbemScripting.SWbemDateTime”)

 

'从一个FILETIME值(非本地)设置。

'假设时区-7小时。GMT.

MsgBox“FILETIME value”&“126036951652030000”

datetime.SetFileTime “126036951652030000”,假

 

'显示为5/24/2000 7:26:05 PM。

MsgBox“GMT time”&dateTime.GetVarDate  

 

'从FILETIME值(本地)设置。

datetime.SetFileTime “126036951652030000”

 

'显示为5/25/2000 2:26:05 AM。

MsgBox“Local value in local time”&dateTime.GetVarDate

设置datetime =没有

 

要求

 

客户

需要Windows Vista或Windows XP。

服务器

需要Windows Server 2008或Windows Server 2003。

类型库

使用Wbemdisp.tlb。

DLL

需要Wbemdisp.dll。