SWbemLastError 对象

SWbemLastError 对象的方法和属性包含错误对象并操作这些对象。 此对象的方法和属性与 SWbemObject 对象的完全相同,但它们用于包含错误信息而不是 WMI 类信息。 该对象可以通过 VBScript CreateObject 调用创建。

可创建 SWbemLastError 错误对象来检查与以前的方法调用关联的详尽错误信息。 如果错误信息不可用,则创建错误对象的尝试将失败。 如果调用成功且返回错误对象,则重置对象的状态。 在发生新错误之前,检索错误对象的进一步尝试将失败。 如果进行异步调用,但该调用失败,则 objWbemErrorObject 参数中的 SWbemSink.OnCompleted 事件可能会返回 SWbemLastError 对象。

成员

SWbemLastError 对象包含以下类型的成员:

方法

SWbemLastError 对象包含以下方法。

方法 说明
Associators_ 未使用。 SWbemObject 对象提供相同方法。
AssociatorsAsync_ 未使用。 SWbemObject 对象提供相同方法。
Clone_ 创建当前对象的副本。
CompareTo_ 测试两个对象是否相等。
Delete_ 未使用。 SWbemObject 对象提供相同方法。
DeleteAsync_ 未使用。 SWbemObject 对象提供相同方法。
ExecMethod_ 未使用。 SWbemObject 对象提供相同方法。
ExecMethodAsync_ 未使用。 SWbemObject 对象提供相同方法。
GetObjectText_ 检索使用 MOF 语法编写的对象的文本表示形式。
Instances_ 未使用。 SWbemObject 对象提供相同方法。
InstancesAsync_ 未使用。 SWbemObject 对象提供相同方法。
Put_ 未使用。 SWbemObject 对象提供相同方法。
PutAsync_ 未使用。 SWbemObject 对象提供相同方法。
References_ 未使用。 SWbemObject 对象提供相同方法。
ReferencesAsync_ 未使用。 SWbemObject 对象提供相同方法。
SpawnDerivedClass_ 未使用。 SWbemObject 对象提供相同方法。
SpawnInstance_ 未使用。 SWbemObject 对象提供相同方法。
Subclasses_ 未使用。 SWbemObject 对象提供相同方法。
SubclassesAsync_ 未使用。 SWbemObject 对象提供相同方法。

属性

SWbemLastError 对象包含以下属性。

属性 访问类型 说明
Derivation_
只读
未使用。 SWbemObject 对象提供相同方法。
Methods_
只读
未使用。 SWbemObject 对象提供相同方法。
Path_
只读
包含一个 SWbemObjectPath 对象,该对象表示当前类或实例的对象路径。
Properties_
只读
表示 SWbemLastError 对象的属性集合。 此属性是一个 SWbemPropertySet 对象。
Qualifiers_
只读
未使用。 SWbemObject 对象提供相同方法。
Security_
只读
未使用。 SWbemObject 对象提供相同方法。

示例

以下 VBScript 示例演示如何检查错误和错误对象信息。

On Error Resume Next

'Ask for non-existent class to force error

Set t_Service = GetObject("winmgmts://./root/default")
Set t_Object = t_Service.Get("Nosuchclass000")

if Err = 0 Then
 WScript.Echo "Got a class"
Else
 WScript.Echo ""
 WScript.Echo "Err Information:"
 WScript.Echo ""
 WScript.Echo "  Source:", Err.Source
 WScript.Echo "  Description:", Err.Description
 WScript.Echo "  Number", "0x" & Hex(Err.Number)

 'Create the last error object
 set t_Object = CreateObject("WbemScripting.SWbemLastError")
 WScript.Echo ""
 WScript.Echo "WMI Last Error Information:"
 WScript.Echo ""
 WScript.Echo " Operation:", t_Object.Operation
 WScript.Echo " Provider:", t_Object.ProviderName

 strDescr = t_Object.Description
 strPInfo = t_Object.ParameterInfo
 strCode = t_Object.StatusCode

 if (strDescr <> nothing) Then
  WScript.Echo " Description:", strDescr  
 end if

 if (strPInfo <> nothing) Then
  WScript.Echo " Parameter Info:", strPInfo  
 end if

 if (strCode <> nothing) Then
  WScript.Echo " Status:", strCode  
 end if

 WScript.Echo ""
 Err.Clear
 set t_Object2 = CreateObject("WbemScripting.SWbemLastError")
 if Err = 0 Then
    WScript.Echo "Got the error object again - this shouldn't have happened!" 
 Else
    Err.Clear
    WScript.Echo "Couldn't get last error again - as expected"
 End if
End If

以下 Perl 示例演示如何检查错误和错误对象信息。

use strict;
use Win32::OLE;

my ( $t_Service, $t_Object, $t_Object2, $strDescr, $strPInfo, $strCode );

# Close STDERR file handle to eliminate redundant error message
close(STDERR);

# Ask for non-existent class to force error 
$t_Service = Win32::OLE->GetObject("winmgmts:{impersonationLevel=impersonate}!\\\\.\\root\\default"); 
$t_Object = $t_Service->Get("Nosuchclass000");

if (defined $t_Object)
{
 print "Got a class\n"; 
}
else
{
 print "\nErr Information:\n\n";
 print Win32::OLE->LastError, "\n";

 # Create the last error object
 $t_Object = new Win32::OLE 'WbemScripting.SWbemLastError';
 print "\nWMI Last Error Information:\n\n";
 print " Operation: ", $t_Object->{Operation}, "\n";
 print " Provider: ", $t_Object->{ProviderName}, "\n";
 
 $strDescr = $t_Object->{Description};
 $strPInfo = $t_Object->{ParameterInfo};
 $strCode = $t_Object->{StatusCode};

 if (defined $strDescr)
 {
  print " Description: ", $strDescr, "\n";  
 }

 if (defined $strPInfo)
 {
  print " Parameter Info: ", $strPInfo, "\n";  
 }

 if (defined $strCode)
 {
  print " Status: ", $strCode, "\n";  
 }

 print "\n";

 $t_Object2 = new Win32::OLE 'WbemScripting.SWbemLastError';
 if (defined $t_Object2)
 {
  print "Got the error object again - this shouldn't have happened!\n";
 }
 else
 {
  print "Couldn't get last error again - as expected\n";
 }
}

要求

要求
最低受支持的客户端
Windows Vista
最低受支持的服务器
Windows Server 2008
标头
Wbemdisp.h
类型库
Wbemdisp.tlb
DLL
Wbemdisp.dll
CLSID
CLSID_SWbemLastError
IID
IID_ISWbemLastError

另请参阅

脚本 API 对象