使用 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

另请参阅

概念

使用 Windows PowerShell 管理 Exchange Online