我正在努力寻找发送电子邮件最多的用户。但最后我只想显示前10名(或n个)发件人。是否有一种方法可以使用选择对象或格式表仅显示顶部结果
$Messages = Get-ExchangeServer * | where{$_.ServerRole -eq "HubTransport"} | %{get-messagetrackinglog -server $_.name -EventID "SEND" -Start (get-date -format G).AddDays(-1) -ResultSize unlimited}) 2>&1 | out-null
$messages | where{$_.sender -like "*@OurDomain.com*"} | select sender | group sender | sort count -Descending | ft count,name
有没有办法让它只显示最热门的结果?
我能想到的唯一方法是将它们存储在一个变量中,并在for循环
在ft
之前,添加:
select -first 10
用你想要的数量替换10。
所以完整的命令是:
$messages | where{$_.sender -like "*@OurDomain.com*"} | select sender | group sender | sort count -Descending | select -first 10 | ft count,name
这是很久以前问过的。但有一件事让我很惊讶,你在使用select
,却没有看到这个东西。好吧,如果你认为这是一个粗鲁的回答——不,不会的。关键是你离解决方案这么近了。所以几天前(顺便说一句,我对powershell了解不多),有人问我这个问题,我不得不只展示前几天的内容。所以我做的第一件事是get-help *display*
认为它会以某种方式向我展示一些东西,让我展示一些内容。我错了,意识到我需要找点什么。然后我找动作词或动词。我检查了get-Verb
,然后我可以看到相关的动词。
我找到了select
。这听起来很合理,然后我打开了select
的帮助。get-help select -ShowWindow
。我检查了参数,发现了这个
-First <Int32>
Gets only the specified number of objects. Enter the number of objects to get.
Required? false
Position? named
Default value False
Accept pipeline input? False
Accept wildcard characters? false
就是这样。我对力量壳一无所知,但我想通过这样的锻炼仍然可以找到它。
对你来说,你知道它会是select
,所以你可以很容易地检查参数来解决它。事实上,即使是关于如何做事情的例子也很有帮助。例如,在发现First
之后,我得到了这个例子,它让我清楚地了解了语法。
PS C:>Get-Process | Sort-Object -Property WS | Select-Object -Last 5
Handles NPM(K) PM(K) WS(K) VS(M) CPU(s) Id ProcessName
------- ------ ----- ----- ----- ------ -- -----------
2866 320 33432 45764 203 222.41 1292 svchost
577 17 23676 50516 265 50.58 4388 WINWORD
826 11 75448 76712 188 19.77 3780 Ps
1367 14 73152 88736 216 61.69 676 Ps
1612 44 66080 92780 380 900.59 6132 INFOPATH
是的,这也可以是第一,我做到了,并得到了结果。
PS C:WINDOWSsystem32> Get-Process | Sort-Object -Property WS | Select-Object -First 5
Handles NPM(K) PM(K) WS(K) CPU(s) Id SI ProcessName
------- ------ ----- ----- ------ -- -- -----------
0 0 60 8 0 0 Idle
841 39 22988 8 0.69 2540 3 SystemSettings
538 38 17900 36 0.97 12636 3 WinStore.App
452 29 16568 44 0.81 25724 3 Video.UI
181 11 1800 832 0.08 6544 0 GoogleCrashHandler
注意:前面的答案非常棒,展示了OP所需要的一切。我只是在展示我解决同样问题的方法。