Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  

Показать сообщение отдельно

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Ну, это ведь совсем не «null». Судя по описанию, Вы пытаетесь использовать несуществующий класс в указанном пространстве Wbem.

Попробуйте сделать проверку существования класса, наподобие:
Код: Выделить весь код
Option Explicit

Dim strComputer

Dim objSWbemLocator
Dim objSWbemServicesEx
Dim collSWbemObjectSet
Dim objSWbemObjectEx


strComputer = "."

Set objSWbemLocator    = WScript.CreateObject("WbemScripting.SWbemLocator")
Set objSWbemServicesEx = objSWbemLocator.ConnectServer(strComputer, "root\cimv2")

WScript.Echo ClassExists(objSWbemServicesEx, "bla-bla-bla")
WScript.Echo ClassExists(objSWbemServicesEx, "Win32_Process")
WScript.Echo ClassExists(objSWbemServicesEx, "CIM_OperatingSystem")
WScript.Echo ClassExists(objSWbemServicesEx, "SNMP_RFC1213_MIB_system")


If ClassExists(objSWbemServicesEx, "SNMP_RFC1213_MIB_system") Then
	Set collSWbemObjectSet = objSWbemServicesEx.InstancesOf("SNMP_RFC1213_MIB_system")
	
	For Each objSWbemObjectEx In collSWbemObjectSet
		'…
	Next
Else
	' …
End If

WScript.Quit 0


Function ClassExists(objSWbemServicesEx, strClassName)
	Dim objSWbemObjectEx
	
	ClassExists = False
	
	For Each objSWbemObjectEx In objSWbemServicesEx.SubclassesOf()
		If StrComp(objSWbemObjectEx.Path_.RelPath, strClassName, vbTextCompare) = 0 Then
			ClassExists = True
			
			Exit Function
		End If
	Next
End Function

Отправлено: 15:07, 07-03-2017 | #20