Я переставил части вашего запроса, чтобы он работал.
$Output = Foreach ($mailbox in (Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails SharedMailbox |
Where-Object {$_.PrimarySMTPAddress -like "*.uk*"})) {
$stats = $null
$stats = Get-MailboxStatistics $mailbox.UserPrincipalName |
Where-Object {$_.LastLogonTime -gt (Get-Date).Adddays(-60)}
$stats | Sort-Object LastLogonTime -Descending |
Select-Object DisplayName,LastLogonTime
}
$Output # Outputs to the console
Это должно быть быстрее просто потому, что сокращает количество раз, которое вы запустили Get-MailboxStatistics
. $Output
хранит итоговые результаты запроса, которые вы можете получить, просто набрав имя переменной. Вывод при обработке каждого объекта (в отличие от того, что мы делаем здесь) мучительно медленный.