2016-09-21 47 views
0

试图从函数结果返回字符串结果所需对象错误。 这段代码运行在Windows 2003。注意:在W2K3,Win32_OperatingSystem不 不支持[email protected]单这就是为什么我们使用For Each .../Exit FunctionVBScript运行时错误:需要的对象(Windows 2003)

Function GetLocalTime() 
    Dim wmi, itm 
    Set wmi = GetObject("winmgmts:root\cimv2") 
    For Each itm in wmi.ExecQuery("SELECT * FROM Win32_OperatingSystem") 
     ' NEXT LINE THROWS 'Object required' error 
     GetLocalTime = itm.LocalDateTime 
     Exit Function 
    Next 
End Function 

Dim started : Set started = GetLocalTime 
WScript.Echo "started " & started 

回答

2

想通了。报告的错误消息发生在GetLocalTime()函数的主体内,但错误实际上来自调用。需要删除Set。这里是更正的代码:

Function GetLocalTime() 
    Dim wmi, itm 
    Set wmi = GetObject("winmgmts:root\cimv2") 
    For Each itm in wmi.ExecQuery("SELECT * FROM Win32_OperatingSystem") 
     GetLocalTime = itm.LocalDateTime 
     Exit Function 
    Next 
End Function 

Dim started : started = GetLocalTime ' <-- CHANGED LINE 
WScript.Echo "started " & started 
相关问题