按(自定义)表达式输出排序

时间:2015-11-29 06:43:12

标签: powershell

所以我将此作为我当前的代码:

Get-Process | Sort Valid,ProcessName |
  Format-Table @{n='ProcessName';e={$_.ProcessName}},
    @{n='Valid';e={if(($_.mainmodule.filename | Get-AuthenticodeSignature).Status -eq 'Valid') {1} else {0}}} -AutoSize

给出了输出:

ProcessName            Valid
-----------            -----
3DG4me                     1
Adobe CEF Helper           1
Adobe CEF Helper           1
Adobe Desktop Service      1
AdobeIPCBroker             1
AdobeUpdateService         1
AGSService                 1
ApplicationFrameHost       1
audiodg                    0
avgnt                      1
avguard                    1
Avira.ServiceHost          1
Avira.Systray              1
avshadow                   1
Calculator                 0
CCLibrary                  1
....etc etc

即使我在格式化之前放了一个排序,也不会让我按有效排序,这是一个整数。我尝试在[int]{1}之前添加{0},但似乎没有效果。

1 个答案:

答案 0 :(得分:1)

您无法按排序发生后才创建的属性进行排序。 Valid不是System.Diagnostic.Process个对象的属性。如果您想按calculated property排序,则需要在排序前添加它。此插入通常通过Select-Object

完成
Get-Process |
  Select-Object ProcessName,
    @{n='Valid';e={if(($_.mainmodule.filename | Get-AuthenticodeSignature).Status -eq 'Valid') {1} else {0}}} |
  Sort Valid, ProcessName |
  Format-Table -AutoSize