Чтобы передать объект, вы должны передать объект, а не строку.
Чтобы этот метод работал должным образом, вы должны иметь объект до вызова процедуры, но в вашем примере кода похоже, что вы пытаетесь передать объект, которого у вас нет. Рабочий пример:
Set objFSO = CreateObject("Scripting.FileSystemObject")
UseFileSystemObject objFSO
Sub UseFileSystemObject( objfso)
'Now I can use the FileSystemObject in this procedure.
End Sub
Но вызов такой процедуры UseFileSystemObject не будет работать,
UseFileSystemObject "objFSO"
потому что вы передаете строку, а не объект.
Единственный способ, которым я могу придумать, чтобы выполнить то, что вы хотите, - это использовать оператор select для записи соответствующего атрибута объекта, что-то вроде этого.
Call PerfCounter "Average Disk Queue Length", "disk_queueLength", "AvgDiskQueueLength"
Sub PerfCounter(CounterDescription, CounterLabel, CounterObjectAttribute)
Set colItems = objWMIService.ExecQuery("SELECT * FROM Win32_PerfFormattedData_PerfDisk_PhysicalDisk",,48)
For Each objItem in colItems
Select Case CounterObjectAttribute
Case "ObjectAttribute1"
Case "ObjectAttribute2"
Case "AvgDiskQueueLength"
Wscript.Echo objItem.AvgDiskQueueLength
End Select
Next
End Sub
Таким образом, в select вы должны добавить регистр для каждого атрибута, который можно использовать, но это позволит вам передать строку в процедуру. Я мог бы быть далеко в этом, но я не знаю, как вы можете передать объект, если у вас нет объекта первым.