我想从 WMI 命名空间的顶部开始,递归遍历所有对象,然后递归遍历每个对象的属性列表,过滤掉并仅将名称中包含mem的属性返回到控制台。
这是我到目前为止所拥有的:
gwmi -namespace "root\cimv2" -list |???? |get-Member -MemberType property | Where-Object { $_.name -match 'mem'}
注意大|???? 在中间那里。如果我删除它,该命令似乎会运行,但无法找到我知道应该找到的属性。为什么?我认为这是因为我从以下两个命令中得到了不同的输出:
gwmi "Win32_operatingSystem" |get-Member -MemberType property (73 lines of output)
gwmi -namespace "root\cimv2" -list |where-object { $_.Name -eq 'Win32_OperatingSystem' } |get-Member -MemberType property (10 lines of output)
我想要的是一个递归连接这个过程的单行代码:
gwmi -namespace "root\cimv2" -list
(manual selection of a WMI class from the list of 1000+ which appear)
gwmi "win32_OperatingSystem" | get-Member -MemberType property | Where-Object { $_.Definition -match 'mem' }
谢谢,如果给出了一个可行的答案,我会接受并支持它(当人们从不这样做时很烦人,不是吗?)。
2009 年 11 月 14 日添加的注释:我还没有给出答案,因为还没有人提供解决问题的单线。