如何通过CIM/WMI cmdlets查看WMI类方法的完整属性及参数描述?
如何通过CIM/WMI cmdlets查看WMI类方法的完整属性及参数描述?
当然可以!你完全能用PowerShell的CIM/WMI cmdlets获取到WMI类方法的完整参数信息、类型定义甚至参数描述,比你之前只列出方法名称要详细得多。我平时排查WMI相关的脚本问题时,经常用这个方式来确认方法的参数要求,不用再去翻文档啦。
用现代的CIM Cmdlets(推荐)
CIM是WMI的更新版本,功能更完善,建议优先使用。以你提到的Win32_SystemDriver类的Create方法为例,步骤如下:
获取目标类的元数据
先把类的信息加载到变量里:$systemDriverClass = Get-CimClass -ClassName Win32_SystemDriver定位到具体的方法
从类的方法集合中找到Create方法:$createMethod = $systemDriverClass.CimClassMethods['Create']查看方法的完整参数信息(含描述)
运行下面的命令,就能一次性获取每个参数的名称、类型、描述以及是否为输入参数:$createMethod.Parameters | ForEach-Object { [PSCustomObject]@{ 参数名称 = $_.Name 参数类型 = $_.CimType 参数描述 = ($_.Qualifiers | Where-Object Name -eq 'Description').Value 输入参数 = ($_.Qualifiers | Where-Object Name -eq 'In').Value } }执行后你会看到和文档里完全对应的参数列表,比如
Name参数的描述、ServiceType的类型定义等。查看方法的返回值信息
如果你想知道方法的返回值类型和描述,可以用:# 查看返回值类型 $createMethod.ReturnType # 查看返回值的描述 ($createMethod.Qualifiers | Where-Object Name -eq 'Description').Value
用旧版WMI Cmdlets(兼容旧环境)
如果你的环境只能用旧的WMI命令,也可以这么操作:
# 获取类信息 $systemDriverClass = Get-WmiObject -Class Win32_SystemDriver -List # 定位到Create方法 $createMethod = $systemDriverClass.Methods['Create'] # 查看输入参数的详细信息 $createMethod.InParameters.Properties | ForEach-Object { [PSCustomObject]@{ 参数名称 = $_.Name 参数类型 = $_.Type 参数描述 = ($_.Qualifiers | Where-Object { $_.Name -eq 'Description' }).Value } }
小提示
- 方法的
Qualifiers集合里还包含很多其他有用的信息,比如ValueMap(参数的可选值映射)、Static(是否为静态方法)等,你可以根据需求提取。 - 对于有数组类型的参数(比如
LoadOrderGroupDependencies[]),在CimType里会显示为StringArray,一眼就能看出来。
备注:内容来源于stack exchange,提问作者Ichigo Kurosaki
相关产品推荐
相关产品推荐

