Как я могу получить типы параметров метода для класса WMI - PullRequest
2 голосов
/ 22 октября 2010

Как я могу получить типы параметров метода для класса WMI, используя vbscript

на самом деле я использую этот скрипт

strComputer = "."
strNameSpace = "root\cimv2"
Set objServices = GetObject("winmgmts:root\cimv2")
Set objShare = objServices.Get("Win32_Share")

Set objInParam = objShare.Methods_("Create"). _
    inParameters.Properties_

For Each Property In objInParam 
    WScript.Echo Property.Name
    WScript.Echo Property.Type //here this code fails, how i can get the type name ?
Next

1 Ответ

2 голосов
/ 22 октября 2010

objInParam, который вы получаете, является SWbemPropertySet , который содержит SWbemProperty , и, как вы можете видеть в документах, у этого класса нет свойства Type.Однако есть свойство CIMType , которое вы можете использовать вместо этого.

Единственная трудность в этом состоит в том, что CIMType возвращает Integer, но вы можете найти все возможные значения в документации для перечисления WbemCimTypeEnum .

Поэтому, если вы будете довольны целым числом, вам придется изменить код на:

For Each Property In objInParam 
    WScript.Echo Property.Name
    WScript.Echo Property.CIMType 
Next

Или, если вам нужно имя строки, вам нужно будет сделать что-то вроде:

For Each Property In objInParam 
    WScript.Echo Property.Name
    WScript.Echo GetTypeName(Property.CIMType)
Next

Function GetTypeName(typeNumber)
   ' fill in with a lookup table to the WbemCimTypeEnum '
End Function
...