WMI 方法属性列表

问题描述 投票:0回答:1

我尝试从任何类访问 WMI 中给定方法的所有属性。

例如,我可以列出“Win32_SystemDriver”类中的方法

Get-WmiObject -Class Win32_SystemDriver -List | Select -ExpandProperty Methods

Name               InParameters                           OutParameters                          Origin            Qualifiers
----               ------------                           -------------                          ------            ----------
StartService                                              System.Management.ManagementBaseObject CIM_Service       {MappingStrings, Override, ValueMap}
StopService                                               System.Management.ManagementBaseObject CIM_Service       {MappingStrings, Override, ValueMap}
PauseService                                              System.Management.ManagementBaseObject Win32_BaseService {MappingStrings, ValueMap}
ResumeService                                             System.Management.ManagementBaseObject Win32_BaseService {MappingStrings, ValueMap}
InterrogateService                                        System.Management.ManagementBaseObject Win32_BaseService {MappingStrings, ValueMap}
UserControlService System.Management.ManagementBaseObject System.Management.ManagementBaseObject Win32_BaseService {MappingStrings, ValueMap}
Create             System.Management.ManagementBaseObject System.Management.ManagementBaseObject Win32_BaseService {MappingStrings, Static, ValueMap}
Change             System.Management.ManagementBaseObject System.Management.ManagementBaseObject Win32_BaseService {MappingStrings, ValueMap}
ChangeStartMode    System.Management.ManagementBaseObject System.Management.ManagementBaseObject Win32_BaseService {MappingStrings, ValueMap}
Delete                                                    System.Management.ManagementBaseObject Win32_BaseService {MappingStrings, ValueMap}

在MSDN文档中,Win32_SystemDriver类的Create方法有很多属性,比如;

uint32 Create(
  [in] string  Name,
  [in] string  DisplayName,
  [in] string  PathName,
  [in] uint8   ServiceType,
  [in] uint8   ErrorControl,
  [in] string  StartMode,
  [in] boolean DesktopInteract,
  [in] string  StartName,
  [in] string  StartPassword,
  [in] string  LoadOrderGroup,
  [in] string  LoadOrderGroupDependencies[],
  [in] string  ServiceDependencies[]
);

我可以使用 CIM/WMI cmdlet 查看这些属性吗?另外,如果可能的话我想看看他们的描述。

powershell wmi wmic
1个回答
0
投票

所谓的“属性”是传递给

Create()
方法的参数。如果您运行
Definition
:
,这些参数将显示在 
Create()
 成员的 
Get-Member

属性中
Get-WmiObject -Class Win32_SystemDriver -List | Get-Member Create | Format-List

TypeName   : System.Management.ManagementClass#ROOT\cimv2\Win32_SystemDriver
Name       : Create
MemberType : Method
Definition : System.Management.ManagementBaseObject Create(System.String Name, System.String DisplayName,
             System.String PathName, System.Byte ServiceType, System.Byte ErrorControl, System.String StartMode,
             System.Boolean DesktopInteract, System.String StartName, System.String StartPassword, System.String
             LoadOrderGroup, System.String[] LoadOrderGroupDependencies, System.String[] ServiceDependencies

如果您希望将其作为列表,我们可以使用 Doug 的正则表达式模式:

PS > (Get-WmiObject -Class Win32_SystemDriver -List | Get-Member Create).Definition -replace '^.+\(|\)$' -split ',\s?'

System.String Name
System.String DisplayName
System.String PathName
System.Byte ServiceType
System.Byte ErrorControl
System.String StartMode
System.Boolean DesktopInteract
System.String StartName
System.String StartPassword
System.String LoadOrderGroup
System.String[] LoadOrderGroupDependencies
System.String[] ServiceDependencies

通过更多的解析,我们可以将它们变成更可读/可用的对象:

PS > (Get-WmiObject -Class Win32_SystemDriver -List | Get-Member Create).Definition -replace '^.+\(|\)$' -split ',\s?' | ForEach-Object {
   $split = $_.Split()
   [PSCustomObject]@{
      Parameter = $split[1]
      Type = [type]$split[0]
   }
}

Parameter                  Type
---------                  ----
Name                       System.String
DisplayName                System.String
PathName                   System.String
ServiceType                System.Byte
ErrorControl               System.Byte
StartMode                  System.String
DesktopInteract            System.Boolean
StartName                  System.String
StartPassword              System.String
LoadOrderGroup             System.String
LoadOrderGroupDependencies System.String[]
ServiceDependencies        System.String[]

我们还将

Type
字符串转换为
[System.Type]
对象。

© www.soinside.com 2019 - 2024. All rights reserved.