3

我正在练习 Powershell,我被分配的问题如下:

写一个管道到get-process,其中cpu利用率大于零,返回默认视图中未显示的属性并按CPU降序对结果进行排序

目前我认为我已经完成了除了非默认属性的要求之外的所有内容,我认为这可以通过 Select-Object cmdlet 完成。

我到目前为止的代码:

Get-Process | Where-Object {$_.CPU -gt 0 } | Select-Object -Property * | sort -Descending

我知道星号是选择所有属性的名字,但我不知道如何设置布尔检查属性是否在默认视图中。有人可以帮帮我吗?

4

1 回答 1

3

查看-ExcludePropertySelect-Object 中的选项:

Get-Process | `
Where-Object {$_.CPU -gt 0 } | `
Select-Object -Property * -ExcludeProperty $(Get-Process)[0].PSStandardMembers.DefaultDisplayPropertySet.ReferencedPropertyNames | `
sort -Descending | format-table

在哪里:

$(Get-Process)[0].PSStandardMembers.DefaultDisplayPropertySet).ReferencedPropertyNames

Get-Process输出中第一个返回值的默认列表。把整个事情分解:

# First process
$fp = $(Get-Process)[0]
# Standard Members
$PSS = $fp.PSStandardMembers
# Default Display Property Set
$DDPS = $PSS.DefaultDisplayPropertySet
# Names of those properties in a list, that you can pass to -ExcludeProperty
$Excl = $DDPS.ReferencedPropertyNames
$Excl

# Command using variables
Get-Process | `
Where-Object {$_.CPU -gt 0 } | `
Select-Object -Property * -ExcludeProperty $Excl | `
sort -Descending | format-table
于 2017-06-22T05:20:03.737 回答