所以我将此作为我当前的代码:
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}
,但似乎没有效果。
答案 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