我尝试从任何类访问 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 查看这些属性吗?另外,如果可能的话我想看看他们的描述。
所谓的“属性”是传递给
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]
对象。