使用 Exchange Online 报告
上一次修改主题: 2014-06-18
**摘要:**使用 Windows PowerShell 来管理使用 Windows PowerShell cmdlet、脚本和批处理过程的 Office 365。
谈起可以使用 Windows PowerShell 和 Exchange Online 执行的操作,可供您使用的 cmdlet 有近 500 个,而本文只勉强算得上触到几分皮毛。但以下这些命令对您可能也会有帮助。经常,管理员想跟踪人们是否实际使用该系统;例如,也许您想知道在过去一周、过去一个月或过去任何时候,是否有用户没有打开自己的 Outlook 邮箱。Windows PowerShell 非常适合执行这种类型的报告。例如,下面的命令将返回自 2013 年 11 月 1 日以来一直无人登录的所有邮箱:
Get-Mailbox | Get-MailboxStatistics | Where-Object {$_.LastLogonTime -lt "11/1/2013"}
而以下命令将返回从来无人登录的所有邮箱:
Get-Mailbox | Get-MailboxStatistics | Where-Object {$_.LastLogonTime -eq $Null}
很酷,不是吗?通过下面的命令,您可以获取其邮箱中具有 10,000 个以上项目的用户列表:
Get-Mailbox | Get-MailboxStatistics | Where-Object {$_.ItemCount -gt 10000}
正如您所料,我们现在就能做到。但我们不会这样做。
下面仅仅列出了众多可用于返回报告信息和统计信息的 cmdlet 中的几个,在此不加详述:
正如我们所说的:哇。
备注
如果您仔细观察该列表,您可能会注意到 Get-CsConferenceReport cmdlet。该 cmdlet 名称的 Get-Cs 部分表明这是一个 Lync Online cmdlet,而非 Exchange Online cmdlet。是真的吗?
这取决于您想怎么看它。此 cmdlet(以及其他 Get-Cs 报告 cmdlet)的确会返回有关 Lync Online 的信息,并且它是由 Lync Online 团队所创建的。但是,Get-Cs 报告 cmdlet 需要 Exchange Online 报告服务才能生成并返回数据。这意味着您必须订阅 Exchange Online,才能使用这些 cmdlet;如果您没有订阅 Exchange Online,则您将无法访问报告服务。正因为如此,这些 cmdlet 都包括在 Exchange 模块而不是 Lync Online 模块中。如果您启动 Windows PowerShell,并只加载 Lync Online 模块,将不会看到任何 Get-CS 报告 cmdlet。简而言之,您需要加载 Exchange 模块才能生成 Lync Online 报告。
因此,使用报告 cmdlet 可以生成哪种报告?正如 cmdlet 名称所表示的,再加上我们已经为您显示的示例,可以得出答案:几乎您能想到的所有报告类型。但是,让我们深入了解一下我们之前介绍过的一个有用的 cmdlet:Get-MailboxStatistics。Get-MailboxStatistics 设计用于返回有关用户邮箱的详细信息。默认情况下,对于单个邮箱,Get-MailboxStatistics 返回类似以下内容的信息:
DisplayName ItemCount StorageLimitStatus LastLogonTime
----------- --------- ------------------ -------------
Alex Darrow 29 10/8/2013 3:18:05 PM
正如您所看到的,即使简单如此,这个报告也提供了一些非常有用的信息,包括 Alex 邮箱中的项目总数 (ItemCount) 以及 Alex 最后一次登录的时间 (LastLogonTime)。
备注
好问题:我们怎么返回这些信息?事实证明,我们可以运行以下 Windows PowerShell 命令:
Get-MailboxStatistics –Identity "alexd"
但是,通过它一定还能获取更多信息。例如,也许我们想要知道 Alex 邮箱中项目的总大小。在这种情况下,我们可以运行以下命令:
Get-MailboxStatistics -Identity "alexd" | Select-Object DisplayName, TotalItemSize
或者,也许我们想要知道 Alex 邮箱中删除项目的数量。没有问题:
Get-MailboxStatistics -Identity "alexd" | Select-Object DisplayName, DeletedItemCount
或者,也许我们两个都想知道:
Get-MailboxStatistics -Identity "alexd" | Select-Object DisplayName, TotalItemSize, DeletedItemCount
您已经明白了。若要查看所有可以使用 Get-MailboxStatistics cmdlet 返回的属性值,只需运行一个类似以下的命令:
Get-MailboxStatistics -Identity "alexd" | Select-Object *
当然,您不限于一次只查看一个邮箱的邮箱统计信息。需要列出有关所有邮箱的信息的报告吗?说到做到:
Get-Mailbox | Get-MailboxStatistics
该命令将返回类似于以下的信息:
DisplayName ItemCount StorageLimitStatus LastLogonTime
----------- --------- ------------------ -------------
Alex Darrow 29 10/8/2013 1:18:05 PM
Allie Bellew 3 11/8/2013 9:18:21 PM
Anne Wallace 3 10/21/2013 3:18:45 PM
Aziz Hassouneh 2 10/18/2013 2:19:05 PM
Belinda Newman 21 10/4/2013 3:19:26 PM
Bonnie Kearn 13 10/8/2013 8:19:50 PM
Is that cool or what?
同样,您不限于以下两个选择:返回一个邮箱的信息,或者返回所有邮箱的信息。相反,您可以编写各种能够返回邮箱子集信息的巧妙、简单的 Windows PowerShell 命令。只需要有关三个邮箱的信息?只需将标识信息通过管道传递给 Get-MailboxStatistics。例如:
"Alex Darrow", "Allie Bellew", "Anne Wallace" | Get-MailboxStatistics
这将仅返回有关三个指定邮箱的数据:
DisplayName ItemCount StorageLimitStatus LastLogonTime
----------- --------- ------------------ -------------
Alex Darrow 29 10/8/2013 1:18:05 PM
Allie Bellew 3 11/8/2013 9:18:21 PM
Anne Wallace 3 10/21/2013 3:18:45 PM
或者,也许您想要为所有属于财务部门的邮箱生成一份报告。可以使用类似以下的命令来完成:
Get-User -Filter '{Department -eq "Finance"}' | Get-MailboxStatistics
也可以试试下面的命令,它将返回自 2013 年 10 月 31 日以来一直未登录的所有用户列表(也就是,他们最后一次登录的时间早于 [-lt] 10/31/2013):
Get-Mailbox | Get-MailboxStatistics | Where-Object {$_.LastLogonTime -lt "11/1/2013"}
很好。
下一篇: 确定可供 Exchange Online 管理员使用的 cmdlet