首页 > 解决方案 > Exchange 获取最后一个活动不早于的活动邮箱

问题描述

嗨,我尝试执行一个脚本作为交换(和在线交换)来查找共享邮箱作为主题

Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails SharedMailbox | Where {(Get-MailboxStatistics $_.Id
entity).LastLogonTime -gt (Get-Date).AddDays(-60)} | Sort -Property @{e={( Get-MailboxStatistics $_.Identity).LastLogonTime}} -Descending | Select-Object DisplayName,@{n="LastLogonTime";e={(Get-Mailbo
xStatistics $_.Identity).LastLogonTime}}|Where-Object {($_.PrimarySMTPAddress -like "*.uk*")}

我有一个错误

管道未执行,因为管道已在执行。管道不能同时执行。+ CategoryInfo : OperationStopped: (Microsoft.Power...tHelperRunspace:ExecutionCmdletHelperRunspace) [], PSInvalidOperationException + FullyQualifiedErrorId : RemotePipelineExecutionFailed

我无法识别错误...您能帮忙吗?

我使用了以下来源

http://www.thatlazyadmin.com/get-exchange-active-mailboxes/

https://www.codetwo.com/admins-blog/list-of-active-mailboxes-powershell/

标签: powershellexchange-server

解决方案


我已经重新排列了您的查询部分以使其正常工作。

$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存储最终查询结果,您只需键入变量名即可访问。在处理每个对象时输出(与我们在这里所做的不同)非常缓慢。


推荐阅读