我想只选择名称不以' __'开头的属性。 例如:
$cpu = Get-WmiObject Win32_Processor
$cpu | Get-Member -MemberType Property
返回:
__CLASS
__DERIVATION
__DYNASTY
__GENUS
__NAMESPACE
__PATH
__PROPERTY_COUNT
__RELPATH
__SERVER
__SUPERCLASS
我发现过滤掉这些内容的唯一方法是:
$cpu | Select-Object ($cpu | Get-Member -MemberType Property | Select-Object Name | Where-Object {$_.Name -NotMatch '^_.*$'} | ForEach-Object {$_.name})
看起来非常低效。有更快的方法吗?
答案 0 :(得分:0)
请尝试查看CIM cmdlet。它们暴露了相同的信息,但在大多数方面基本上都更好。以下是CIM cmdlet的basic intro,可帮助您入门。如果您只需要属性的名称,则可以将上述内容重写为:
Get-CimInstance CIM_Processor | get-member -membertype Property
如果你被卡在WMI上,你可以使用:
Get-WmiObject Win32_Processor | get-member -membertype Property `
| Where-Object {$_.Name -notmatch '__'}
答案 1 :(得分:0)
一个选项:
$ cpu = Get-WmiObject Win32_Processor |选择[a-z] *