SWbemLastError 物件

SWbemLastError物件的方法和屬性包含及操作錯誤物件。 這個物件的方法和屬性與 SWbemObject 物件的方法和屬性完全相同,但用來包含錯誤資訊,而不是 WMI 類別資訊。 此物件可由 VBScript CreateObject 呼叫建立。

您可以建立 SWbemLastError 錯誤物件,以檢查與先前的方法呼叫相關聯的擴充錯誤資訊。 如果錯誤資訊無法使用,嘗試建立錯誤物件將會失敗。 如果呼叫成功且錯誤物件傳回,則會重設物件的狀態。 進一步嘗試擷取錯誤物件將會失敗,直到發生新的錯誤為止。 如果您進行失敗的非同步呼叫,SWbemLastError物件可能會由objWbemErrorObject參數中的SWbemSink.OnCompleted事件傳回給您。

成員

SWbemLastError物件具有下列類型的成員:

方法

SWbemLastError物件具有這些方法。

方法 描述
Associators_ 未使用。 SWbemObject物件會提供相同的方法。
AssociatorsAsync_ 未使用。 SWbemObject物件會提供相同的方法。
克隆_ 製作目前 物件的複本。
CompareTo_ 測試兩個物件是否相等。
刪除_ 未使用。 SWbemObject物件會提供相同的方法。
DeleteAsync_ 未使用。 SWbemObject物件會提供相同的方法。
ExecMethod_ 未使用。 SWbemObject物件會提供相同的方法。
ExecMethodAsync_ 未使用。 SWbemObject物件會提供相同的方法。
GetObjectText_ 擷取以 MOF 語法撰寫之物件的文字表示。
實例_ 未使用。 SWbemObject物件會提供相同的方法。
InstancesAsync_ 未使用。 SWbemObject物件會提供相同的方法。
把_ 未使用。 SWbemObject物件會提供相同的方法。
PutAsync_ 未使用。 SWbemObject物件會提供相同的方法。
引用_ 未使用。 SWbemObject物件會提供相同的方法。
ReferencesAsync_ 未使用。 SWbemObject物件會提供相同的方法。
SpawnDerivedClass_ 未使用。 SWbemObject物件會提供相同的方法。
SpawnInstance_ 未使用。 SWbemObject物件會提供相同的方法。
子_ 未使用。 SWbemObject物件會提供相同的方法。
SubclassesAsync_ 未使用。 SWbemObject物件會提供相同的方法。

屬性

SWbemLastError物件具有這些屬性。

屬性 存取類型 描述
推導_
唯讀
未使用。 SWbemObject物件會提供相同的方法。
方法_
唯讀
未使用。 SWbemObject物件會提供相同的方法。
路徑_
唯讀
包含代表目前類別或實例之物件路徑的 SWbemObjectPath 物件。
性能_
唯讀
表示 SWbemLastError 物件的屬性集合。 此屬性是 SWbemPropertySet 物件。
限定 符_
唯讀
未使用。 SWbemObject物件會提供相同的方法。
安全_
唯讀
未使用。 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 物件的腳本