在 Exchange 命令行管理程序中查找队列和消息

与早期版本的 Exchange 一样,可以使用 Exchange Server 中的 Exchange 命令行管理程序查看有关队列和消息的信息,并使用该信息对队列和消息执行操作。 通常,活动 Exchange 包含大量要传递的队列和消息,因此了解如何识别要管理的队列或消息非常重要。

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

另请记住,邮箱服务器和边缘传输服务器上存在队列, (传输服务) 。 有关队列和队列中的消息的详细信息,请参阅 队列和队列中的消息

队列筛选参数

下表汇总了队列管理 cmdlet 上可用的筛选参数。

Cmdlet 筛选参数 Comments
Get-Queue Exclude
筛选
标识
Include
服务器
可以将 IncludeExclude 参数与同一命令中的其他筛选参数一起使用。
不能在同一命令中使用 标识筛选器 参数。
Server 参数指定要在其中运行命令的服务器。 不能在同一命令中使用 服务器标识 参数,但可以将 Server 参数与同一命令中的其他筛选参数一起使用。
Resume-Queue
Retry-Queue
Suspend-Queue
Identity
筛选
服务器
不能将 Identity 参数与同一命令中的其他筛选参数一起使用。
Server 参数指定要在其中运行命令的服务器。 可以在同一命令中使用 服务器筛选器 参数。
Get-QueueDigest Dag
筛选
Forest
服务器
Site
需要使用 Dag站点服务器 参数之一,但不能在同一命令中一起使用它们中的任何一个。
可以将 Filter 参数与任何其他筛选参数一起使用。

队列标识

Identity 参数使用基本语法<服务器>\ <队列>。 通常,此值唯一标识队列,因此不能将其他筛选参数与 Identity 参数一起使用。 Get-Queue cmdlet 例外,你可以在其中将 IncludeExclude 参数与 Identity 参数一起使用。

下表说明了队列管理 cmdlet 上的 Identity 参数语法。

标识参数值 说明
<Server>\<PersistentQueueName><PersistentQueueName> 指定或本地服务器上的持久队列。
<PersistentQueueName>SubmissionUnreachablePoison
有关持久队列的详细信息,请参阅 队列类型
<Server>\<NextHopDomain><NextHopDomain> 指定或本地服务器上的传递队列。
<NextHopDomain> 是队列的 NextHopDomain 属性值中的队列名称。 例如,发送连接器的地址空间、Active Directory 站点的名称或 DAG 的名称。 有关详细信息,请参阅 NextHopSolutionKey
<Server>\<QueueInteger><QueueInteger> 指定或本地服务器上的传递队列。
<QueueInteger> 是分配给队列数据库中的传递队列或影子队列的唯一整数值。 但是,需要运行 Get-Queue cmdlet 才能在 IdentityQueueIdentity 属性中找到此值。
<Server>\Shadow\<QueueInteger>Shadow\<QueueInteger> 指定或本地服务器上的影子队列。 有关影子队列和影子冗余的详细信息,请参阅 Exchange Server 中的影子冗余
<Server>\** 指定或本地服务器上的所有队列。
注意标识 是一个位置参数,这意味着可以在不指定限定符的情况下指定 -Identity 值。 例如,以下命令生成相同的结果:
Get-Queue -Identity *
Get-Queue *
Get-Queue

队列 cmdlet 上的筛选器参数

可以在所有队列管理 cmdlet 上使用 Filter 参数,根据队列的属性标识一个或多个队列。 Filter 参数使用比较运算符创建 OPath 筛选器,以将命令限制为满足筛选条件的队列。 可以使用逻辑运算符 -and 为匹配指定多个条件。 下面是语法的一个通用示例:

Get-Queue -Filter "<Property1> -<ComparisonOperator> '<Value1>' -and <Property2> -<ComparisonOperator> '<Value2>'..."

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

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

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

在Get-Queue上包括和排除参数

可以在 Get-Queue cmdlet 上单独使用 IncludeExclude 参数,以及每个 othe 或与其他筛选参数一起使用,以微调结果。 例如,你能够:

  • 排除空队列。

  • 排除到外部目标的队列。

  • 包含具有特定值为 DeliveryType 的队列。

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

说明 示例
DeliveryType 包含或排除基于 DeliveryType 属性的队列,该属性定义如何将消息传输到下一跃点。 有效值在 NextHopSolutionKey 中介绍。
可以指定用逗号分隔的多个值。
返回本地服务器上的所有传递队列,其中下一跃点是本地服务器上托管并配置为智能主机路由的发送连接器。
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队列。 请注意,外部收件人的邮件可能需要多个内部跃点才能到达网关服务器,该服务器在外部传递邮件。 返回本地服务器上的所有内部队列。
Get-Queue -Include Internal

请注意,可以使用 Filter 参数复制 IncludeExclude 参数的功能。 例如,以下命令生成相同的结果:

  • Get-Queue -Exclude Empty

  • Get-Queue -Filter "MessageCount -gt 0"

但是,如你所看到的, IncludeExclude 参数的语法更简单,更易于记住。

Get-QueueDigest

Get-QueueDigest cmdlet 允许使用单个命令查看有关组织中部分或所有队列的信息。 具体来说, Get-QueueDigest cmdlet 让您能够根据队列在服务器、DAG、Active Directory 站点或整个 Active Directory 林中的位置来查看队列信息。

请注意,结果中不包括订阅的边缘传输服务器上的队列。 此外, Get-QueueDigest 在边缘传输服务器上可用,但结果仅限于边缘传输服务器上的本地队列。

注意

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

下表介绍了 Get-QueueDigest cmdlet 上可用的筛选和排序参数。

参数 说明
Dag服务器站点 这些参数互斥 (不能在同一命令) 中使用,并设置 cmdlet 的范围。 需要指定其中一个参数或 开关。 通常,您会使用服务器、DAG 或 Active Directory 站点的名称,但是您也可以使用唯一标识服务器、DAG 或站点的任何值。 可以指定用逗号分隔的多个服务器、DAG 或站点。
Forest 如果未使用 Dag服务器站点 参数,则需要此开关。 不为此开关指定值。 使用此开关可从本地 Active Directory 林中的所有 Exchange 邮箱服务器获取队列。 不能使用此开关查看远程 Active Directory 林中的队列。
DetailsLevel Normal 是默认值。 结果中返回以下属性:
  • QueueIdentity
  • ServerIdentity
  • MessageCount

Verbose 在结果中返回以下附加属性:

  • DeferredMessageCount
  • LockedMessageCount*
  • IncomingRate
  • 传出率
  • Velocity
  • NextHopDomain
  • NextHopCategory
  • NextHopConnector
  • DeliveryType*
  • 状态
  • RiskLevel*
  • OutboundIPPool*
  • LastError
  • TlsDomain

None 省略结果中 “详细信息” 列中的队列名称。

* 这些属性保留供 Microsoft 内部使用,不在本地 Exchange 组织中使用。 有关此列表中所有属性的详细信息,请参阅 队列属性

筛选 根据队列 cmdlet 上的筛选参数 部分中所述的队列属性筛选队列。 可以使用任何可筛选的队列属性,如 队列属性 主题中所述。
GroupBy 对队列结果进行分组。 可以按以下属性之一对结果进行分组:
  • DeliveryType
  • LastError
  • NextHopCategory
  • NextHopDomain
  • NextHopKey
  • 状态
  • ServerName

默认情况下,会按 NextHopDomain 对结果进行分组。 有关这些队列属性的信息,请参阅 队列属性

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

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

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

邮件筛选参数

下表汇总了消息管理 cmdlet 上可用的筛选参数。

Cmdlet 筛选参数 Comments
Get-Message 筛选
标识
Queue
服务器
不能在同一命令中使用 筛选器标识队列 参数。
Server 参数指定要在其中运行命令的服务器。 可以在同一命令中使用 服务器筛选器 参数。
Remove-Message
Resume-Message
Suspend-Message
筛选
标识
服务器
需要使用 Identity 参数或 Filter 参数,但不能在同一命令中使用它们。
Server 参数指定要在其中运行命令的服务器。 可以在同一命令中使用 服务器筛选器 参数。
Redirect-Message 服务器 此 cmdlet 从指定服务器上的所有传递队列中排出活动消息,因此 Server 是唯一可用的筛选参数。 有关详细信息,请参阅 队列中的重定向消息
Export-Message 标识 此参数实际上不是筛选器,因为它唯一标识消息。 若要识别此 cmdlet 的多个消息,请使用 Get-Message 并将结果通过管道传输到 Export-Message。 有关详细信息和示例,请参阅 从队列导出消息

邮件标识

消息管理 cmdlet 上的 Identity 参数唯一标识一个或多个队列中的消息,因此不能使用任何其他消息筛选参数。 Identity 参数使用基本语法 <Server>\<Queue>\<MessageInteger>

下表介绍了可用于消息管理 cmdlet 上的 Identity 参数的语法。

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

<Queue> 是队列标识的标识,如 队列标识 部分所述:

  • 永久队列名
  • 传递队列名称
  • 队列整数
  • 卷影队列标识

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

<Server>\*\<MessageInteger>*\<MessageInteger><MessageInteger> 指定或本地服务器上的队列数据库中所有队列中的所有消息副本。

消息 cmdlet 上的筛选器参数

可以将 Filter 参数与 Get-MessageRemove-MessageResume-MessageSuspend-Message cmdlet 结合使用,以根据消息的属性标识一个或多个消息。 Filter 参数使用比较运算符创建 OPath 筛选器,以将命令限制为符合筛选条件的消息。 可以使用逻辑运算符 -and 为匹配指定多个条件。 下面是语法的一个通用示例:

Get-Message -Filter "<Property1> -<ComparisonOperator> '<Value1>' -and <Property2> -<ComparisonOperator> '<Value2>'..."

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

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

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

队列参数

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

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

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

运算符 函数 代码示例
-eq 指定值的完全匹配。 显示状态为“重试”的所有队列:
Get-Queue -Filter "Status -eq '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'"
显示主题包含文本“发薪日贷款”的邮件:
Get-Message -Filter "Subject -like '*payday loan*'"

可以使用逻辑运算符 -and指定计算多个表达式的筛选器。 队列或消息必须与结果中包含的所有筛选条件匹配。

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

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

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

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

高级分页参数

使用 Exchange 命令行管理程序查看队列中的队列和消息时,查询一次检索一页信息。 高级分页参数控制结果的大小以及结果的显示顺序。 所有高级分页参数都是可选的,可以在 Get-QueueGet-Message cmdlet 上使用其他筛选参数,也可以不带其他筛选参数。 如果未指定任何高级分页参数,则查询将按标识的升序返回结果。

默认情况下,指定排序顺序时, 始终包含 Identity 属性并按升序排序,因为其他可用的队列或消息属性不唯一。

可以使用 BookmarkIndexBookmarkObject 参数标记排序结果中的位置。 如果在检索下一页结果时书签对象不再存在,则结果将从离书签最近的项开始,具体取决于指定的排序顺序。

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

参数 描述
BookmarkIndex 指定结果中显示的结果开始的位置。 此参数的值是总结果中从 1 开始的索引。 如果值小于或等于零,则返回第一个完整的结果页。 如果该值设置为 Int.MaxValue,则返回结果的最后一个完整页。
不能将此参数与 BookmarkObject 参数一起使用。
BookmarkObject 指定结果中显示结果开始的对象。 如果指定书签对象,则该对象将被用作搜索起点。 该对象之前或之后的行 (,具体取决于 检索 SearchForward 参数) 的值。
不能将此参数与 BookmarkIndex 参数一起使用。
IncludeBookmark 指定是否在结果中包含书签对象。 有效值包含:
$true:书签对象包含在结果中。 此值为默认值。
$false:结果中不包含书签对象。 在针对有限结果大小运行查询,然后将最后一项指定为下一个查询的书签时,请使用此值。 这可以防止书签对象包含在这两个结果中。
ResultSize 指定要每页显示的结果数。 如果不指定值,则使用默认结果大小 1,000 个对象。 Exchange 将结果限制为 250,000。
ReturnPageInfo 这是一个隐藏参数。 它返回有关结果总数和当前页第一个对象的索引的信息。 默认值为 $false
SearchForward 指定搜索的方向。
指定书签:相对于书签索引或对象,在结果中向前或向后搜索。
未指定书签:在结果中第一个或最后一个项的结果中向前或向后搜索。
有效值包含:
$true:从结果中的第一项或从指定的书签向前搜索。 如果书签之外没有结果,查询将返回最后一整页结果。 此值为默认值。
$false:从结果中的最后一项或从指定的书签向后搜索。 如果书签之外的结果少于整页,查询将返回结果的第一整页。
SortOrder 指定控制结果排序顺序的消息属性。 属性的指定顺序指示优先顺序的降序 (结果按第一个属性排序,然后这些结果按第二个属性和子) 排序。
此参数使用语法: <+|-><Property1>,<+|-><Property2>...,其中 + 按升序对属性进行排序,并 - 按降序对属性进行排序。
如果不使用此参数,则按 Identity 属性按升序对结果进行排序。

此示例演示如何在查询中使用高级分页参数。 命令返回指定服务器上的前 500 条消息。 结果先按发件人地址按升序排序,然后按邮件大小降序排序。

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

本示例按指定排序顺序返回指定服务器上的前 500 条消息,设置书签对象,从结果中排除书签对象,并按相同的排序顺序检索接下来的 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