使用 Exchange 命令行管理程序管理队列

适用于:Exchange Server 2013

与之前版本的 Exchange 一样,您可以使用 Microsoft Exchange Server 2013 中的 Exchange 命令行管理程序来查看有关队列和队列中邮件的信息,并对队列和邮件执行管理操作。 在 Exchange 2013 中,队列存在于邮箱服务器和边缘传输服务器中。 本主题将这些服务器称为传输服务器

使用命令行管理程序在传输服务器上查看和管理队列以及队列中的邮件时,了解如何识别要管理的队列或邮件至关重要。 通常,传输服务器中包含大量要传递的队列和邮件。 可使用队列和邮件管理 cmdlet 上提供的筛选参数识别要查看或管理的队列或邮件。

请注意,也可以使用 Exchange 工具箱中的队列查看器管理队列和队列中的邮件。 但是,与队列查看器相比,队列和邮件查看 cmdlet 支持更多的可筛选属性和筛选器选项。 有关使用队列查看器的详细信息,请参阅队列查看器

队列筛选参数

下表描述了队列管理 cmdlet 上提供的筛选参数。

Cmdlet 筛选参数 Comments
Get-Queue Identity

Filter

Include

Exclude
不能在同一命令中使用 Identity 参数和 Filter 参数。 可以将 IncludeExclude 参数与同一命令中的 Filter 参数一起使用。
Resume-Queue

Retry-Queue

Suspend-Queue
Identity

筛选
需要使用 Identity 参数或 Filter 参数,但不能在同一命令中使用这两者。
Get-QueueDigest Server

Dag

Site

Forest

筛选
需要使用 服务器Dag站点 参数,但不能在同一命令中同时使用其中任何参数。 可以将 Filter 参数与任何其他筛选参数一起使用。

请注意, 服务器 参数在所有队列管理 cmdlet 上都可用。 在 Get-QueueDigest cmdlet 上, Server 参数是一个范围参数,指定要在其中查看有关队列的摘要信息的一个或多个服务器。 在所有其他队列管理 cmdlet 上,使用 Server 参数连接到特定服务器,并在该服务器上运行队列管理命令。 可以将 Server 参数与 Filter 参数一起使用,也可以不带 Filter 参数,但不能将 Server 参数与 Identity 参数一起使用。 将传输服务器的主机名或 FQDN 与 Server 参数一起使用。

队列标识

队列管理 cmdlet 中的 Identity 参数用于标识特定队列。 使用 Identity 参数时,无法指定任何其他队列筛选参数,因为已唯一标识队列。 Identity 参数使用基本语法<服务器>\<队列>

服务器<>占位符是 Exchange 服务器的主机名或 FQDN,例如 mailbox01mailbox01.contoso.com。 如果省略 <服务器> 限定符,则隐含本地服务器。

队列><占位符接受以下值之一:

  • 持久队列名称:持久队列在所有邮箱或边缘传输服务器上具有唯一且一致的名称。 永久队列名为:

    • 提交:此队列包含等待分类程序处理的消息。
    • 无法访问:此队列包含无法路由的消息。 放入邮件之前,此队列不存在。
    • 病毒:此队列包含确定对 Exchange 服务器有害的消息。 放入邮件之前,此队列不存在。
  • 传递队列名称:传递队列的名称是队列的 NextHopDomain 属性的值。 例如,队列名称可以是发送连接器的地址空间、Active Directory 站点的名称或 DAG 的名称。 有关详细信息,请参阅 队列主题中的"NextHopSolutionKey"一节。

  • 队列整数:在队列数据库中为传递队列和影子队列分配唯一的整数值。 但是,需要运行 Get-Queue cmdlet 在 IdentityQueueIdentity 属性中查找队列的整数值。

  • 影子队列名称:影子队列使用语法 Shadow\<QueueInteger>

下表汇总了可用于队列管理 cmdlet 的 Identity 参数的语法。 在所有值中, <Server> 是服务器的主机名或 FQDN。

队列标识格式

标识参数值 说明
<Server>\<PersistentQueueName><PersistentQueueName> 指定服务器或本地服务器上的永久队列。

<PersistentQueueName>SubmissionUnreachablePoison
<Server>\<NextHopDomain><NextHopDomain> 指定服务器或本地服务器上的传递队列。

<NextHopDomain> 是队列中邮件的路由目标或传递组。 有关详细信息,请参阅 队列主题中的"NextHopSolutionKey"一节。
<Server>\<QueueInteger><QueueInteger> 指定服务器或本地服务器上的传递队列。

<QueueInteger> 是队列的唯一整数值,显示在 Get-Queue cmdlet 的 Identity 属性中。
<Server>\Shadow\<QueueInteger>Shadow\<QueueInteger> 指定服务器或本地服务器上的卷影队列。
<Server>\** 指定服务器或本地服务器上的所有队列。 请注意,这些值只能与 Get-Queue cmdlet 一起使用。

队列筛选器参数

可以在所有队列管理 cmdlet 中使用 Filter 参数,以根据队列的属性指定要查看或管理的队列。 Filter 参数使用比较运算符创建一个表达式,该运算符将队列操作限制为满足筛选条件的队列。 可以使用 -and 逻辑运算符指定结果必须匹配的多个条件。

有关可与 Filter 参数一起使用的队列属性的完整列表,请参阅 队列

有关可与 Filter 参数一起使用的比较运算符列表,请参阅本主题中的筛选队列或消息时要使用的比较运算符部分。

有关使用 Filter 参数查看和管理队列的过程示例,请参阅 管理队列

包括和排除参数

Exchange 2013 具有 cmdlet 上Get-Queue可用的 IncludeExclude 参数。 可以单独、一起或与 Filter 参数一起使用这些参数,在本地或指定传输服务器上对队列结果进行微调。 例如,你能够:

  • 从结果中排除空队列。
  • 从结果中排除指向外部目标的队列。
  • 在结果中包含拥有特定 DeliveryType 值的队列。

IncludeExclude 参数使用以下队列属性来筛选队列:

描述 命令行管理程序代码示例
DeliveryType 此值根据 DeliveryType 属性包括或排除队列。 可以指定用逗号分隔的多个值。 Queues 主题的“NextHopSolutionKey”部分介绍了 DeliveryType 的有效值。 此示例返回本地服务器上的所有传递队列,其中,下一个跃点是本地服务器上针对智能主机路由进行配置的发送连接器:

Get-Queue -Include SmartHostConnectorDelivery
Empty 此值包括或排除空队列。 空队列在 MessageCount 属性中具有 值0 此示例返回本地服务器上包含邮件的所有队列

Get-Queue -Exclude Empty
External 此值包含或排除在 NextHopCategory 属性中具有 值的External队列。

外部队列的 DeliveryType 值始终是以下项之一:
  • DeliveryAgent
  • DnsConnectorDelivery
  • NonSmtpGatewayDelivery
  • SmartHostConnectorDelivery

有关详细信息,请参阅 队列主题中的"NextHopSolutionKey"一节。

此示例返回本地服务器上的所有内部队列

Get-Queue -Exclude External
Internal 此值包含或排除在 NextHopCategory 属性中具有 值的Internal队列。 有关详细信息,请参阅 队列主题中的"NextHopSolutionKey"一节。 此示例返回本地服务器上的所有内部队列。

Get-Queue -Include Internal

请注意,可以使用 Filter 参数复制 IncludeExclude 参数的功能。 例如, 命令 Get-Queue -Exclude Empty 生成与 相同的结果 Get-Queue -Filter "MessageCount -gt 0"。 但是, IncludeExclude 参数的语法更简单,更易于记住。

Get-QueueDigest

Exchange 2013 添加一个名为 Get-QueueDigest 的新队列 cmdlet。 此 cmdlet 让您能够使用单个命令查看有关 Exchange 组织中部分或全部队列的信息。 具体来说, Get-QueueDigest cmdlet 让您能够根据队列在服务器、DAG、Active Directory 站点或整个 Active Directory 林中的位置来查看队列信息。 请注意,外围网络中已订阅的边缘传输服务器上的队列不包括在结果中。 此外, Get-QueueDigest 在边缘传输服务器中可用,但结果仅限于边缘传输服务器上的队列。

注意

默认情况下,Get-QueueDigest cmdlet 显示包含 10 封或更多邮件的传递队列,而且结果每一到两分钟更新一次。 有关如何更改这些默认值的说明,请参阅 Configure Get-QueueDigest

下表中介绍了适用于 Get-QueueDigest cmdlet 的筛选和排序参数。

参数 说明
Dag服务器站点 这些参数是互斥的,用于设置 cmdlet 的作用域。 需要指定其中一个参数或 开关。 通常,您会使用服务器、DAG 或 Active Directory 站点的名称,但是您也可以使用唯一标识服务器、DAG 或站点的任何值。 可以指定用逗号分隔的多个服务器、DAG 或站点。
Forest 如果未使用 Dag服务器站点 参数,则需要此开关。 不为此开关指定值。 通过使用此开关,您可以获取来自 Active Directory 林中所有 Exchange 2013 邮箱服务器的队列。 不能使用 开关查看远程 Active Directory 林中的队列。
DetailsLevel 此参数接受值 NoneNormalVerbose。 默认值为 Normal。 使用 值 None时,将从结果的 “详细信息” 列中省略队列名称。
筛选 此参数让您能够根据队列属性筛选队列。 可以使用队列筛选器主题中描述的任何可筛选队列属性。
GroupBy 此参数对队列结果进行分组。 可以按以下属性之一对结果进行分组:
  • DeliveryType
  • LastError
  • NextHopCategory
  • NextHopDomain
  • NextHopKey
  • Status
  • ServerName

默认情况下,结果按 NextHopDomain分组。 有关这些队列属性的详细信息,请参阅 队列筛选器

ResultSize 此参数将队列结果限制为您指定的值。 队列根据队列中的消息数按降序排序,并按 GroupBy 参数指定的值分组。 默认值为 1000。 也就是说,默认情况下,该命令显示按 NextHopDomain 分组的前 1000 个队列,并按照从包含最多邮件的队列到包含最少邮件的队列顺序排序。
Timeout 参数指定操作超时之前的秒数。默认值 00:00:10 为 或 10 秒。

此示例返回名为 Mailbox01、Mailbox02 和 Mailbox03 的 Exchange 2013 邮箱服务器上的所有非空外部队列。

Get-QueueDigest -Server Mailbox01,Mailbox02,Mailbox03 -Include External -Exclude Empty

邮件筛选参数

下表描述了邮件管理 cmdlet 上提供的筛选参数。

Cmdlet 筛选参数 Comments
Get-Message Identity

Filter

Queue
所有筛选参数都是互斥的,可以在同一个命令中一起使用。
Remove-Message

Resume-Message

Suspend-Message
Identity

筛选
需要使用 Identity 参数或 Filter 参数,但不能在同一命令中使用这两者。
Export-Message 标识 Identity 参数是必需的。

请注意, Server 参数可用于除 Export-Message cmdlet 之外的所有消息管理 cmdlet。 使用 Server 参数连接到特定服务器,并在该服务器上运行消息管理命令。 可以将 Server 参数与 Filter 参数一起使用,也可以不带 Filter 参数,但不能将 Server 参数与 Identity 参数一起使用。 将传输服务器的主机名或 FQDN 与 Server 参数一起使用。

邮件标识

邮件管理 cmdlet 中的 Identity 参数标识一个或多个队列中的特定邮件。 使用 Identity 参数时,无法指定任何其他消息筛选参数,因为已唯一标识了该消息。 Identity 参数使用服务器队列<MessageInteger>的基本语法<>\<>。\

服务器<>占位符是 Exchange 服务器的主机名或 FQDN,例如 mailbox01mailbox01.contoso.com。 如果省略 <服务器> 限定符,则隐含本地服务器。

队列><占位符接受队列的标识,如本主题的“队列标识”部分所述。 例如,可以使用队列数据库中的永久队列名、 NextHopDomain 值,或队列的唯一整数值。

<MessageInteger> 占位符表示在消息首次进入服务器上的队列数据库时分配给该消息的唯一整数值。 如果将邮件发送给需要多个队列的多个收件人,则队列数据库中所有队列中的全部邮件副本具有相同的整数值。 但是,需要运行 Get-Message cmdlet 在 IdentityMessageIdentity 属性中查找邮件的整数值。

下表汇总了可用于消息管理 cmdlet 的 Identity 参数的语法。 在所有值中, <Server> 是服务器的主机名或 FQDN。

邮件标识格式

标识参数值 说明
<Server>\<Queue>\<MessageInteger><Queue>\<MessageInteger> 指定服务器或本地服务器上的特定队列中的邮件。

<MessageInteger> 是邮件的唯一整数值,显示在 Get-Message cmdlet 的 Identity 属性中。

<Queue> 代表以下值之一:
  • 持久队列名称:值 SubmissionUnreachablePoison
  • 传递队列名称:队列的 NextHopDomain 属性的值,实际上是队列的名称。 此值可能是路由目标或传递组。 有关详细信息,请参阅 队列主题中的"NextHopSolutionKey"一节。
  • 队列整数在 Get-Message 或 Get-Queue cmdlet 的 Identity 属性中显示的传递队列或影子队列的唯一整数值。
  • 影子队列标识:影子队列标识使用语法 Shadow\<QueueInteger>
<Server>\*\<MessageInteger>*\<MessageInteger><MessageInteger> 指定服务器或本地服务器上队列数据库中所有队列中的全部邮件副本。

邮件筛选器参数

可以使用 Get-MessageRemove-MessageResume-MessageSuspend-Message cmdlet 上的 Filter 参数根据邮件的属性指定要查看或管理的邮件。 Filter 参数使用比较运算符创建一个表达式,该运算符将消息操作限制为满足筛选条件的消息。 可以使用 -and 逻辑运算符指定结果必须匹配的多个条件。

有关可与 Filter 参数一起使用的消息属性的完整列表,请参阅 队列

有关可与 Filter 参数一起使用的比较运算符列表,请参阅本主题中的筛选队列或消息时要使用的比较运算符部分。

有关使用 Filter 参数查看和管理消息的过程示例,请参阅 管理队列

队列参数

Queue 参数仅用于 Get-Message cmdlet。 可以使用此参数获取特定队列中的所有消息,或使用通配符 (*) 获取多个队列中的所有消息。 使用 Queue 参数时,请使用队列标识格式 <服务器>\<队列> ,如本主题的“队列标识”部分中所述。

筛选队列或邮件时使用的比较运算符

使用 Filter 参数创建队列或邮件筛选器表达式时,需要为要匹配的属性值包含比较运算符。 下表列出了可在筛选表达式中使用的比较运算符以及各个运算符的功能。 对于所有运算符,比较的值不区分大小写。

比较运算符

运算符 功能 命令行管理程序代码示例
-eq 该运算符用于指定结果必须与表达式中提供的属性值完全匹配。 若要显示状态为"重试"的所有队列的列表,请运行以下命令:

Get-Queue -Filter "Status -eq 'Retry'"

显示处于"Retry"状态的所有邮件的列表:

Get-Message -Filter "Status -eq 'Retry'"
-ne 该运算符用于指定结果应与表达式中提供的属性值匹配。 若要显示状态不为"活动"的所有队列的列表,请运行以下命令:

Get-Queue -Filter "Status -ne 'Active'"

若要显示状态不为"活动"的所有邮件的列表,请运行以下命令:

Get-Message -Filter "Status -ne 'Active'"
-gt 该运算符用于值以整数或日期/时间形式表示的属性。 筛选结果只包含指定属性值大于表达式中提供的值的队列或邮件。 若要显示当前包含的邮件数大于 1,000 的队列的列表,请运行以下命令:

Get-Queue -Filter "MessageCount -gt 1000"

显示当前重试次数超过 3 的邮件列表:

Get-Message -Filter "RetryCount -gt 3"
-ge 该运算符用于值以整数或日期/时间形式表示的属性。 筛选结果只包含指定属性值大于或等于表达式中提供的值的队列或邮件。 若要显示当前包含的邮件数等于或大于 1,000 的队列的列表,请运行以下命令:

Get-Queue -Filter "MessageCount -ge 1000"

显示当前重试次数等于或大于 3 的邮件列表:

Get-Message -Filter "RetryCount -ge 3"
-lt 该运算符用于值以整数或日期/时间形式表示的属性。 筛选结果只包含指定属性值小于表达式中提供的值的队列或邮件。 若要显示当前包含的邮件数小于 1,000 的队列的列表,请运行以下命令:

Get-Queue -Filter "MessageCount -lt 1000"

显示 SCL 值小于 6 的邮件列表:

Get-Message -Filter "SCL -lt 6"
-le 该运算符用于值以整数或日期/时间形式表示的属性。 筛选结果只包含指定属性值小于或等于表达式中提供的值的队列或邮件。 若要显示当前包含的邮件数等于或小于 1,000 的队列的列表,请运行以下命令:

Get-Queue -Filter "MessageCount -le 1000"

显示 SCL 值等于或小于 6 的邮件列表:

Get-Message -Filter "SCL -le 6"
-like 该运算符用于以文本字符串形式表示的属性值。 筛选结果只包含指定属性值包含表达式中提供的文本字符串的队列或邮件。 可以将通配符 (*) 包含在应用于文本字符串字段的 类似 表达式中,但不能包含具有枚举类型的字段。 若要显示目标为以 Contoso.com 结尾的任何 SMTP 域的传递队列的列表,请运行以下命令:

Get-Queue -Filter "Identity -like '*contoso.com'"

显示主题中包含"payday loan"文本的邮件列表:

Get-Messages -Filter "Subject -like '*payday loan*'"

可以使用 -and 比较运算符指定评估多个表达式的筛选器。 队列或邮件必须满足要包含在结果中的筛选器的所有条件。

此示例显示目标为以 Contoso.com 结尾的任何 SMTP 域名并且当前包含的邮件数大于 500 的队列的列表。

Get-Queue -Filter "Identity -like '*contoso.com*' -and MessageCount -gt 500"

此示例显示从 SCL 大于 5 的 contoso.com 域中的任何电子邮件地址发送的邮件的列表。

Get-Message -Filter "FromAddress -like '*Contoso.com*' -and SCL -gt 5"

高级分页参数

基于当前邮件流,对队列和邮件的查询可能会返回较大的对象集。 可以使用高级分页参数来控制如何检索和显示查询结果。

使用命令行管理程序查看队列和队列中的邮件时,查询每次将检索一页信息。 高级分页参数可以控制结果集的大小,还可用于对结果进行排序。 所有高级分页参数都是可选的,并且可以与任何一个用于 Get-QueueGet-Message cmdlet 的参数集结合使用。 如果未指定任何高级分页参数,则查询将按标识的升序返回结果。

默认情况下,如果指定了排序顺序,则会始终包括邮件标识属性,并以升序排序该属性。 这是默认的顺序关系。 由于可以按排序顺序包括的其他属性都不是唯一的,因此会包括邮件标识属性。 通过按排序顺序显式包括邮件标识属性,可以指定结果显示按降序排序的邮件标识。

可以使用 BookmarkIndexBookmarkObject 参数标记排序结果集中的位置。 如果在检索下一页结果时书签对象不再存在,则默认顺序关系会确保结果集将从最接近书签的对象开始。 最接近的对象取决于所指定的排序顺序。

下表介绍了高级分页参数。

参数 描述
BookmarkIndex 此参数指定所显示的结果在结果集中的起始位置。 此参数的值是结果集总数中从 1 开始的索引。 如果值小于或等于零,则返回第一个完整的结果页。 如果该值设置为 Int.MaxValue,则返回结果的最后一个完整页。
BookmarkObject 此参数指定所显示的结果在结果集中的起始对象。 如果指定书签对象,则该对象将被用作搜索起点。 根据 SearchForward 参数的值,检索该对象之前或之后的行。 不能在单个查询中合并 BookmarkObject 参数和 BookmarkIndex 参数。
IncludeBookmark 此参数指定是否在结果集中包括书签对象。 默认情况下,该值设置为 $true 并包含书签对象。 可以运行有限结果大小的查询,然后将该结果集中最后一个项目指定为下一个查询的书签。 在这种情况下,你可能希望将 IncludeBookmark 设置为 $false ,以便对象不会包含在两个结果集中。
ResultSize 此参数指定每页显示的结果数。 如果不指定值,则使用默认结果大小 1,000 个对象。 Exchange 将结果集限制为 250,000。
ReturnPageInfo 此参数是隐藏参数。 它返回有关结果总数和当前页第一个对象的索引的信息。 默认值为 $false
SearchForward 此参数指定在结果集中是向前搜索还是向后搜索。 此参数不影响结果集的返回顺序。 它确定相对于书签索引或对象的搜索方向。 如果未指定书签索引或对象, SearchForward 参数将确定搜索是从结果集中的第一个对象还是最后一个对象开始。

此参数的默认值为 $true。 如果此参数设置为 $true 并指定了书签,则查询将从该书签向前搜索。 如果使用此配置,并且结果没有超过书签,则查询将返回最后一个完整的结果页。

如果将 SearchForward 参数设置为 $false 并指定了书签,则查询将从该书签向后搜索。 如果使用此配置,并且结果没有超过书签,则查询将返回最后一个完整的结果页。
SortOrder 此参数指定一个邮件属性数组,用于控制结果集的排序顺序。 排序顺序属性将以优先级的降序顺序来指定。 每个属性均以逗号分隔,并附加加号 (+) 以按升序排序,或附加减号 (-) 以按降序排序。

如果不使用此参数指定显式的排序顺序,则将按各个对象类型的 Identity 字段排序和显示与查询匹配的记录。 如果不显式指定排序顺序,则结果始终按标识以升序进行排序。

下列代码示例显示如何在查询中使用高级分页参数。 在此示例中,该命令将连接到指定的服务器,并检索包含 500 个对象的结果集。 结果以排序顺序进行显示,首先按发件人地址以升序显示,然后按邮件大小以降序显示。

Get-Message -Server mailbox01.contoso.com -ResultSize 500 -SortOrder +FromAddress,-Size

如果要查看连续的页,可以为在结果集中检索到的最后一个对象设置书签,并运行其他查询。 需要使用命令行管理程序的脚本功能来执行此过程。

以下示例使用脚本来检索第一个结果页,然后设置书签对象,并从结果集中排除书签对象,然后在指定的服务器上检索随后的 500 个对象。

  1. 打开命令行管理程序,并键入以下命令以检索第一个结果页。

    $Results=Get-message -Server mailbox01.contoso.com -ResultSize 500 -SortOrder +FromAddress,-Size
    
  2. 若要设置书签对象,请键入以下命令以将第一页中的最后一个元素保存到变量中。

    $temp=$results[$results.length-1]
    
  3. 若要在指定的服务器上检索接下来的 500 个对象,并排除书签对象,请键入以下命令。

    Get-message -Server mailbox01.contoso.com -BookmarkObject:$temp -IncludeBookmark $False -ResultSize 500 -SortOrder +FromAddress,-Size