我正在尝试查找发送最多电子邮件的用户。 但最后我只想显示前10位(或n位数)的发件人。 有没有办法只使用select-object或format-table
显示最佳结果$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循环中输出它们
答案 0 :(得分:5)
在ft
之前,添加:
select -first 10
将10改为你想要多少。
所以完整的命令是:
$messages | where{$_.sender -like "*@OurDomain.com*"} | select sender | group sender | sort count -Descending | select -first 10 | ft count,name
答案 1 :(得分:0)
这是很久以前问的。但是令我惊讶的是,您正在使用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:\WINDOWS\system32> 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所需的一切。我只是在展示解决同一件事的方式。