在命令行管理程序的队列中查找Exchange邮件

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

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

另请注意,队列存在于邮箱服务器和边缘传输 (传输服务) 。 有关队列和队列中的邮件详细信息,请参阅 队列和队列中的邮件

队列筛选参数

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

Cmdlet 筛选参数 注释
Get-Queue Exclude
Filter
标识
Include
服务器
可以在同一 命令中 将 Include 和 Exclude 参数与其他筛选参数一同使用。
不能在同一个命令中同时使用 IdentityFilter 参数。
Server 参数指定要运行该命令的服务器。 不能在同一个命令中同时使用 ServerIdentity 参数,但可以在同一个命令中将 Server 参数与其他筛选参数一同使用。
Resume-Queue
Retry-Queue
Suspend-Queue
Identity
Filter
服务器
不能在同一个命令中将 Identity 参数与其他筛选参数一同使用。
Server 参数指定要运行该命令的服务器。 可以在同一个命令中同时使用 ServerFilter 参数。
Get-QueueDigest Dag
Filter
Forest
服务器
Site
您需要使用 Dag、Site、ServerForest 参数之一,但无法在同一个命令中同时使用其中任何一个参数。
可以将 Filter 参数与任何其他筛选参数一同使用。

队列标识

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

下表介绍了队列管理 cmdlet 的 Identity 参数语法。

标识参数值 描述
<Server>\<PersistentQueueName><PersistentQueueName> 指定或本地服务器上永久队列。
<PersistentQueueName>Submission Unreachable 、 或 Poison
有关永久队列详细信息,请参阅 队列的类型
<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 是位置参数,这意味着你可以指定值而不指定 -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 本身、每个 othe 或其他筛选参数使用 IncludeExclude 参数来微调结果。 例如,你能够:

  • 排除空队列。

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

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

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

说明 示例
DeliveryType 包含或排除基于 DeliveryType 属性的队列,该属性定义如何将邮件传输到下一个跃点。 NextHopSolutionKey中介绍了有效值。
可以指定用逗号分隔的多个值。
返回本地服务器上所有传递队列,其中下一个跃点是托管在本地服务器上并配置为智能主机路由的发送连接器。
Get-Queue -Include SmartHostConnectorDelivery
Empty 包含或排除空队列。 空队列在 0 MessageCount 属性中具有值。 返回本地服务器上包含邮件的所有队列。
Get-Queue -Exclude Empty
External 包含或排除 External NextHopCategory 属性中包含值的队列。
外部队列的 DeliveryType 值始终是以下项之一:
DeliveryAgent
DnsConnectorDelivery
NonSmtpGatewayDelivery
SmartHostConnectorDelivery
有关详细信息,请参阅 NextHopSolutionKey
返回本地服务器上所有内部队列。
Get-Queue -Exclude External
Internal 此值包括或排除在 Internal NextHopCategory 属性中具有值的队列。 请注意,外部收件人的邮件在到达外部传递的网关服务器之前可能需要多个内部跃点。 返回本地服务器上所有内部队列。
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 上可用的筛选和排序参数。

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

OutgoingRate
速度
NextHopDomain
NextHopCategory
NextHopConnector
DeliveryType
状态
RiskLevel * _
• _
OutboundIPPool _ • *
_
LastError

TlsDomain
None 省略结果中 "详细信息" 列中的队列名称。
*这些属性仅供 Microsoft 内部使用,不在本地组织Exchange使用。 有关此列表中所有属性的信息,请参阅队列 属性
Filter 根据队列属性筛选队列,如队列 cmdlet 上的 Filter 参数部分所述。 可以使用队列属性主题中所述的任何可筛选 队列属性
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 筛选参数 注释
Get-Message Filter
标识
Queue
服务器
不能在同一个命令中同时使用 Filter、IdentityQueue 参数。
Server 参数指定要运行该命令的服务器。 可以在同一个命令中同时使用 ServerFilter 参数。
Remove-Message
Resume-Message
Suspend-Message
Filter
标识
服务器
您需要使用 Identity 参数或 Filter 参数,但不能在同一个命令中同时使用这两个参数。
Server 参数指定要运行该命令的服务器。 可以在同一个命令中同时使用 ServerFilter 参数。
Redirect-Message 服务器 此 cmdlet 从指定服务器的所有传递队列中排出活动邮件,因此 Server 是唯一可用的筛选参数。 有关详细信息,请参阅 重定向队列中的邮件
Export-Message Identity 此参数实际上不是筛选器,因为它唯一标识邮件。 若要为此 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-Message、Remove-Message、Resume-MessageSuspend-Message cmdlet 一同使用,以根据邮件的属性标识一个或多个邮件。 Filter 参数使用比较运算符创建 OPath 筛选器,以将命令限制为符合筛选条件的邮件。 可以使用逻辑运算符为 -and 匹配指定多个条件。 下面是语法的一般示例:

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

有关可用于 Filter 参数的邮件属性的完整列表,请参阅 Message properties) 。

有关可用于 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 包含指定的文本。 您需要在文本字符串中包括 () * 通配符。 显示目标为以"域"结尾的任何 SMTP 域 Contoso.com:
Get-Queue -Filter "Identity -like '*contoso.com'"
显示主题中包含文本"payday loan"的邮件:
Get-Message -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"

高级分页参数

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

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

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

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

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