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 |
标头 |
|
类型库 |
|
DLL |
|
CLSID |
CLSID_SWbemLastError |
IID |
IID_ISWbemLastError |