使用 Exchange 命令行管理程序管理队列
适用于: Exchange Server 2007 SP3, Exchange Server 2007 SP2, Exchange Server 2007 SP1, Exchange Server 2007
上一次修改主题: 2006-09-18
本主题描述 Exchange 命令行管理程序中的队列 cmdlet,并说明如何使用 cmdlet 和参数集创建查询、检索结果和执行修改操作。有关队列任务以及如何使用这些任务来监视和排除故障的详细信息,请参阅管理队列。
在 Microsoft Exchange Server 2007 中,可以使用 Exchange 命令行管理程序来执行管理和配置任务,并创建脚本以自动执行任务。还可以使用 Exchange 命令行管理程序来查看服务器上队列的相关信息以及这些队列中存在的邮件,并对队列和邮件项目执行管理操作。这些操作可帮助您排除邮件流中的故障,并识别垃圾邮件。有关如何使用 Exchange 命令行管理程序的详细信息,请参阅使用 Exchange 管理外壳。
管理队列和邮件
队列任务分为两个类别:查看操作和修改操作。使用查看操作,您可以显示服务器上的队列和排队的邮件,并选择这些数据在显示时如何进行分组和排序。修改操作是用于更改队列和邮件状态的操作。两种类型的任务都需要通过使用远程过程调用 (RPC) 连接到传输工作进程来访问数据。有关 Exchange 2007 传输进程的详细信息,请参阅 传输体系结构。
默认情况下,Exchange 命令行管理程序的处理对象是本地服务器。还可以通过指定远程服务器名称作为队列标识的一部分,或对筛选器使用 Server 参数,来连接到远程服务器,并查看该服务器上的队列和邮件。有关如何使用 Exchange 命令行管理程序来查看队列和邮件的详细信息,请参阅如何查看队列和如何查看邮件。
队列 Cmdlet
表 1 列出了在 Exchange 命令行管理程序中可用于管理队列和队列中的邮件的 cmdlet。有关如何使用每个 cmdlet 的详细信息,请参阅“详细信息”列中列出的帮助主题。
表 1 队列 cmdlet
Cmdlet | Usage | 详细信息 |
---|---|---|
Export-Message |
此 cmdlet 用于将邮件副本保存在管理员指定的文件路径中。 |
|
Get-Message |
此 cmdlet 用于查看当前在队列中等待传递的邮件的详细信息。可以使用 Get-Message cmdlet 检索一组邮件,然后通过管道将结果传递给一个突出的 cmdlet。 |
|
Get-Queue |
此 cmdlet 用于查看传输服务器上所显示队列的详细配置信息。可以使用 Get-Queue cmdlet 检索一组队列,然后通过管道将结果传递给一个突出的 cmdlet。 |
|
Remove-Message |
此 cmdlet 用于删除队列中的邮件。管理员可以选择是否发送未送达报告 (NDR)。 |
|
Resume-Message |
此 cmdlet 用于重新传递先前挂起的邮件。可以使用 Resume-Message cmdlet 将处于带毒邮件队列中的邮件重新提交回提交队列,以便分类程序重新处理。 |
|
Resume-Queue |
此 cmdlet 用于重新传递先前挂起的队列中的邮件。 |
|
Retry-Queue |
此 cmdlet 用于强制当前处于“重试”状态的队列进行连接尝试。此连接尝试将覆盖下一个已安排的重试。也可以将 Retry-Queue cmdlet 和 Resubmit 参数一起使用,将处于传递队列或无法到达队列中的邮件发送回提交队列,以便分类程序重新处理。 |
|
Suspend-Message |
此 cmdlet 用于挂起位于 Exchange 2007 传输服务器的队列中的邮件传递。 |
|
Suspend-Queue |
此 cmdlet 用于挂起 Exchange 2007 传输服务器上的队列的传出活动。 |
使用队列任务参数集
队列任务支持多个参数集。这些参数集如下所示:Identity、Queue 和 Filter。Queue 参数集只能与邮件命令一起使用。Identity、Queue 和 Filter 参数集不能在命令中组合使用。Server 参数只能与筛选表达式一起使用。
还可以将 Exchange 命令行管理程序中可用的高级分页参数与 Identity、Queue 和 Filter 参数集组合使用。通过将高级分页参数与 Get-Message 和 Get-Queue cmdlet 一起使用,可以控制结果集的排序和显示方式。本主题后面部分中的表 4 介绍了高级分页参数。
使用修改邮件或队列的命令时,必须使用 Identity、Queue 或 Filter 参数集。如果未提供任何参数,则 Get-Message 和 Get-Queue cmdlet 将显示本地服务器上的所有邮件或队列对象。
如果队列或邮件查询的结果集包含的项目多于 250,000 个,则会发生错误,系统将提示您应用筛选器,以减少结果数。
使用 Identity 参数
如果要查看或要操作的特定邮件或队列是已知的,请使用 Identity 参数。按标识进行搜索的速度快于创建与筛选器相同的查询。服务器名称可以用主机名或完全限定的域名 (FQDN) 来表示。可以输入远程服务器的名称作为标识的一部分,来启动与该服务器的 RPC 连接,以便查询该服务器上的队列。如果不使用服务器名称,则表示使用本地主机。为修改操作提供标识时,所标识的对象必须是经过完整定义的,并且必须是唯一的。如果标识不是显式的,则不执行此操作。如果省略标识的服务器部分,则假定为本地计算机。
作为 Get-Queue 或 Get-Message cmdlet 的一部分使用 Identity 参数时,Identity 参数支持使用通配符表达式。
队列标识
持久性队列有唯一名称,并且可以按名称指定。将为传递队列分配唯一的数据库标识。可以使用此数据库标识来指定队列,也可以使用传递目标的名称来指定队列。若要通过指定队列的唯一数据库标识以对队列执行操作,必须首先运行 Get-Queue cmdlet。数据库标识会返回到结果中。表 2 列出了队列的可接受标识格式。
表 2 队列标识格式
队列标识格式 | 用法 |
---|---|
Server\QueueJetID (Int64) |
传递队列完整的、唯一的标识。 |
\QueueJetID |
本地服务器上队列的标识。省略了服务器名称。因此,表示使用本地服务器。 |
Server\* |
指定服务器上的任何队列。 |
Server\NextHopDomain |
指定服务器上的队列,其中包含等待传递到特定远程域的邮件。 |
\NextHopDomain |
其中包含将发往特定域的邮件并且位于本地服务器上的队列。 |
Server\Poison |
位于指定服务器上的带毒邮件队列。 |
Server\Submission |
所包含的项目正在等待由分类程序进行处理的队列。 |
Server\Unreachable |
所包含的项目无法进行路由并且位于指定服务器上的队列。 |
以下代码是如何将队列标识与 Get-Queue cmdlet 一起使用的示例。此示例将返回其中包含的邮件将传递到以 Contoso.com 结尾的简单邮件传输协议 (SMTP) 域名的所有队列的列表。此示例还会将结果集格式化为详细列表:
Get-Queue -Identity Server\*Contoso.com | format-list
邮件标识
邮件标识是唯一的数据库邮件项目和队列标识的组合。当邮件进入排队的 JET 数据库时,将为该邮件分配一个整数形式的标识,该整数将追加到队列标识的末尾,以创建邮件标识。若要通过指定邮件的数据库标识以对邮件执行操作,必须首先运行 Get-Message cmdlet。标识将在结果中返回。如果要连接到远程服务器,则可以包括作为邮件标识一部分的服务器名称。如果省略服务器名称,则会假定是本地服务器。要发送给多个收件人的邮件可能位于多个队列中。可以使用通配符来指定希望在邮件将路由到的各个队列中查找邮件。表 3 提供了有效邮件标识的示例。
表 3 邮件标识格式
邮件标识格式 | 用法 |
---|---|
Server\QueueJetId\MessageJetID |
队列中邮件的完整命名。 |
Server\Poison\MessageJetID |
带毒邮件队列中的邮件。 |
MessageJetID |
具有此 JET 数据库标识并且将路由到本地服务器上任何队列(一个邮件路由到多个队列)的所有邮件。 |
Server\*\MessageJetID |
具有此 JET 数据库标识并且将路由到指定服务器上任何队列的所有邮件。 |
以下代码是如何将邮件标识与 Get-Message cmdlet 一起使用的示例。此示例将返回具有指定标识并且位于指定服务器上任何队列中的所有邮件的列表。此示例还会将结果集格式化为详细列表:
Get-message -Identity Server\*\1234 | Format-List
使用 Filter 参数
队列任务支持使用 Filter 参数指定检索队列和邮件的条件。队列和邮件属性可用作筛选条件。可以创建筛选器以显示一组有限的队列或邮件。找到要监视的队列和邮件之后,可以查看每个对象的属性信息。此信息可帮助您解决邮件流问题。
使用 Filter 参数可以提供带有逻辑及关系运算符的表达式,以便只显示满足筛选条件的队列或邮件对象。可以使用 -and 逻辑运算符来指定结果需要匹配的多个条件。如果使用 -and 运算符,则将仅显示与所有指定表达式条件相匹配的对象。可以使用邮件或队列的属性子集来指定筛选条件。指定的属性必须是要查询的对象的有效属性,并且必须使用正确的语法来表示要匹配的值。如果要将属性值表示为单个整数以外的任何值,请务必用引号将该值引起。
Server 参数可以与 Filter 参数一起包括在命令中。使用 Server 参数可以指定要通过使用 RPC 进行连接的服务器(以便查询该服务器上的队列和邮件并检索结果集)的主机名称或 FQDN。
有关可以用于筛选的属性、这些属性的正确语法以及受支持运算符的详细信息,请参阅下列主题:
使用 Queue 参数
Queue 参数只能用于邮件命令。使用此参数可以指定从中检索邮件的队列的标识。如果已指定了队列,则会检索该队列中的所有邮件。这样就可以从特定队列中检索所有邮件,而不必使用筛选器表达式。可以通过使用通配符来检索多个队列中的邮件。将 Queue 参数用于邮件命令时,请使用表 2 中的队列标识格式。以下代码示例显示了如何将 Queue 参数用于 Get-Message cmdlet。此示例产生的结果集仅包含位于指定服务器并排队等待传递到 SMTP 域 Contoso.com 的邮件:
Get-message -Queue Server\Contoso.com
使用高级分页参数
根据当前邮件流,对队列和邮件的查询可以返回非常大的对象集合。可以使用高级分页参数来控制如何检索和显示查询结果。
使用 Exchange 命令行管理程序查看队列和队列中的邮件时,查询会每次检索一页信息。高级分页参数可以控制结果集的大小,还可用于对结果进行排序。所有高级分页参数都是可选的,并且可以与任何一个用于 Get-Queue 和 Get-Message cmdlet 的参数集结合使用。如果没有指定任何高级分页参数,则查询将按标识的升序返回结果。默认情况下,如果指定了排序顺序,则会始终包括邮件标识属性,并以升序排序该属性。这是默认的顺序关系。由于可以按排序顺序包括的其他属性都不是唯一的,因此会包括邮件标识属性。通过按排序顺序显式包括邮件标识属性,可以指定结果显示按降序排序的邮件标识。
可以使用 BookmarkIndex 和 BookmarkObject 参数来标记排序结果集中的位置。如果在检索下一页结果时书签对象不再存在,则默认顺序关系会确保结果集将从最接近书签的对象开始。最接近的对象取决于所指定的排序顺序。
表 4 介绍了高级分页参数。
表 4 高级分页参数
参数 | 说明 |
---|---|
BookmarkIndex |
BookmarkIndex 参数指定结果集中所显示结果的开始位置。BookmarkIndex 参数的值是一个总结果集中基于 1 的索引。如果值小于或等于零,则返回第一个完整的结果页。如果将值设置为 Int.MaxValue,则返回最后一个完整的结果页。 |
BookmarkObject |
BookmarkObject 参数指定结果集中所显示结果开始处的对象。如果指定书签对象,则该对象将被用作搜索起点。是检索该对象之前还是之后的行,取决于 SearchForward 参数的值。不能在单个查询中将 BookmarkObject 参数和 BookmarkIndex 参数组合使用。 |
IncludeBookmark |
IncludeBookmark 参数指定是否在结果集中包括书签对象。默认情况下,此值设置为 |
ResultSize |
ResultSize 参数指定每页显示的结果数。如果不指定值,则使用默认结果大小 1,000 个对象。Exchange Server 2007 将结果集限制为最多 250,000。 |
ReturnPageInfo |
ReturnPageInfo 参数是隐藏参数。它返回有关结果总数和当前页第一个对象的索引的信息。默认值为 |
SearchForward |
SearchForward 参数指定是在结果集中向前搜索还是向后搜索。此参数不影响结果集的返回顺序。它确定相对于书签索引或对象的搜索方向。如果不指定书签索引或对象,则 SearchForward 参数将确定搜索是从结果集中的第一个对象开始还是从最后一个对象开始。此参数的默认值是 |
SortOrder |
SortOrder 参数指定一个邮件属性数组,用于控制结果集的排序顺序。排序顺序属性将以优先级的降序顺序来指定。每个属性均以逗号分隔,并追加 + 符号以按升序排序,或追加 - 符号以按降序排序。如果不使用此参数指定显式的排序顺序,则显示与查询匹配的记录,并按各个对象类型的 Identity 字段进行排序。如果不显式指定排序顺序,则结果始终按标识以升序进行排序。 |
下列代码示例显示如何在查询中使用高级分页参数。在此示例中,该命令将连接到指定的服务器,并检索包含 500 个对象的结果集。结果以排序顺序进行显示,首先按发件人地址以升序显示,然后按邮件大小以降序显示:
Get-message -Server Exchange.Contoso.com -ResultSize 500 -SortOrder +FromAddress,-Size
如果要查看连续的页,可以为在结果集中检索到的最后一个对象设置书签,并运行其他查询。必须使用 Exchange 命令行管理程序的脚本功能才能执行此过程。
以下示例使用脚本来检索第一个结果页,然后设置书签对象,并从结果集中排除书签对象,然后在指定的服务器上检索随后的 500 个对象。
示例:如何使用脚本来设置书签对象
打开 Exchange 命令行管理程序,并键入以下命令以检索第一个结果页:
$Results=Get-message -Server Exchange.Contoso.com -ResultSize 500 -SortOrder +FromAddress,-Size
若要设置书签对象,请键入以下命令以将第一页中的最后一个元素保存到变量中:
$temp=$results[$results.length-1]
若要在指定的服务器上检索接下来的 500 个对象,并排除书签对象,请键入以下命令:
Get-message -Server Exchange.Contoso.com -BookmarkObject:$temp -IncludeBookmark $False -ResultSize 500 -SortOrder +FromAddress,-Size
详细信息
有关队列管理任务的详细信息,请参阅管理队列。
有关如何使用 Exchange 命令行管理程序的详细信息,请参阅使用 Exchange 管理外壳。