当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] 使用 PowerShell 管理 Exchange 中的收件箱规则

作者:精品下载站 日期:2024-12-15 00:47:12 浏览:15 分类:玩电脑

使用 PowerShell 管理 Exchange 中的收件箱规则


Outlook 邮箱规则允许用户配置不同的条件来处理收件箱文件夹中的传入电子邮件。您可以使用 Outlook 规则将电子邮件从特定发件人移动到目标邮箱文件夹、将电子邮件转发给其他用户等。用户可以从 Outlook GUI 创建和管理邮箱规则。 Exchange 管理员可以通过 PowerShell 管理用户邮箱中的规则。在本文中,我们将向您展示如何使用 PowerShell 在 Exchange Server 和 Microsoft 365 (Exchange Online) 邮箱中创建、删除、禁用和修改 Outlook 收件箱规则。

客户端与服务器端 Outlook 规则

Outlook 中可以配置两种类型的收件箱规则:客户端规则和服务器端规则。

  • 服务器端 Outlook 规则在收到电子邮件时在 Exchange 服务器端执行。它们始终有效,无论用户是否运行 Outlook 客户端(使用 Outlook Web App 创建的规则始终在服务器端)。在Exchange服务器端可以应用以下规则:将电子邮件标记为重要、将电子邮件移动到另一个邮箱文件夹、删除邮件、将电子邮件转发到另一个邮箱;

  • 客户端规则仅在 Outlook 客户端启动时应用。规则示例包括将电子邮件移至 PST 文件、将电子邮件标记为已读(如何检查 Exchange 用户是否已阅读电子邮件)、显示警报或播放声音。您无法通过 PowerShell 管理这些规则。这些规则在 Outlook 界面中具有“仅限客户端”状态。

[玩转系统] 使用 PowerShell 管理 Exchange 中的收件箱规则

当您在 Outlook 中创建在客户端上处理的新规则时,会显示一条警告:

This rule is a client-only rule, and will process only when Outlook is running.

[玩转系统] 使用 PowerShell 管理 Exchange 中的收件箱规则

Get-InboxRule:如何列出 Exchange 邮箱中的用户收件箱规则?

我们尝试查看用户邮箱中的收件箱规则。使用 PowerShell 连接到您的 Exchange 环境。

您可以使用 PowerShell 命令远程连接到本地 Exchange Server 组织:

$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri http://mun-exch1.a-d.site/PowerShell/ -Authentication Kerberos -Credential $UserCredential
Import-PSSession $Session

使用 Exchange Online PowerShell 模块连接到您的 M365 租户:

Install-Module -Name ExchangeOnlineManagement
Connect-ExchangeOnline

在 Microsoft 365 中,您可以在 PowerShell 中使用基于证书的身份验证。

以下 cmdlet 用于管理 Exchange 中的邮箱规则:

  • Get-InboxRule
  • New-InboxRule
  • Enable-InboxRule
  • Disable-InboxRule
  • Set-InboxRule
  • Remove-InboxRule

要查看 Exchange 邮箱中的规则列表,请运行以下 PowerShell 命令

Get-InboxRule -Mailbox john.doe

[玩转系统] 使用 PowerShell 管理 Exchange 中的收件箱规则

如您所见,显示了每个规则的名称、状态(启用:True/False)、优先级和 RuleIdentity。

您可以通过指定其名称来查看有关特定收件箱规则的详细信息:

Get-InboxRule -Mailbox john.doe -Identity "HelpDesk"| fl

通常,您可以通过规则的描述来了解规则的内容:

Get-InboxRule -Mailbox john.doe -Identity "HelpDesk "| Select Name, Description | fl

[玩转系统] 使用 PowerShell 管理 Exchange 中的收件箱规则

Get-InboxRule cmdlet 不会列出 Outlook 客户端规则。

Outlook 收件箱中可能存在隐藏的服务器端规则。这些规则在 Outlook 客户端或 OWA 中不可见。您可以使用-IncludeHidden参数列出隐藏邮箱规则:

Get-InboxRule -Mailbox john.doe -IncludeHidden

您可以使用 PowerShell 查找用户邮箱中的特定规则。例如,您必须找到删除电子邮件的所有规则:

Get-InboxRule -Mailbox john.doe | ?{ $_.DeleteMessage }

另外,可能还有一种场景,当信息安全部门要求您查找您公司所有用户邮箱中的所有自动邮件转发规则时:

foreach ($i in (Get-Mailbox -ResultSize unlimited)) { Get-InboxRule -Mailbox $i.DistinguishedName | where {$_.ForwardTo} | fl MailboxOwnerID,Name,ForwardTo >> C:\PS\All_Mailbox_Forward_Rules.txt }

生成的文本文件将包含邮箱列表、转发规则名称以及邮件将转发到的收件人。

使用 PowerShell 在 Outlook 中创建收件箱规则

您可以使用 New-InboxRule Exchange cmdlet 为 Outlook 收件箱创建新规则。例如,您希望将主题中包含某些关键字的所有电子邮件转发给其他用户。运行这个命令:

New-InboxRule -Name ZenossAlerttoHelpdesk -Mailbox NYadmin -SubjectContainsWords "Zenoss HW Alert" -ForwardTo "Helpdesk"

[玩转系统] 使用 PowerShell 管理 Exchange 中的收件箱规则

在某些情况下,当您使用 PowerShell 在邮箱中创建规则时,所有 Outlook 客户端规则都会被禁用。在这种情况下,会显示警告:

New-InboxRule: Using Outlook Web App or Windows PowerShell to modify your rules will delete any rules that were previously turned off using Outlook. If you want to preserve the rules you turned off using Outlook, select "No" and use Outlook to edit your  rules. Are you sure you want to proceed.

以下规则将为所有来自秘书@a-d.site且主题中带有关键字“Annual Meeting”的电子邮件设置红色类别和高重要性:

New-InboxRule -Mailbox john.doe -name SecretaryRule -From secretary@a-d.site -SubjectContainsWords “Annual meeting" -ApplyCategory "Red Category"  -MarkImportance "High" -StopProcessingRules $true

将 2023 年 1 月 1 日之前收到的所有邮件移至存档文件夹的规则示例:

New-InboxRule -Name "Move to Archive" -Mailbox john.doe -MoveToFolder "john.doe:\Inbox\Archive" -ReceivedBeforeDate "01.01.2023"

[玩转系统] 使用 PowerShell 管理 Exchange 中的收件箱规则

转发指定时间段内的所有电子邮件:

New-InboxRule -name ForwardTo -mailbox john.doe -ReceivedAfterDate 12/12/2022 -ReceivedBeforeDate 01/01/2023 -ForwardTo secretary@a-d.site

使用 Get-MessageTrackingLog 跟踪 Exchange 中的邮件时,使用邮箱规则的邮件转发事件将显示在带有源 MAILBOXRULE 的日志中。

您可以为 AD 中特定组织单位 (OU) 中的所有用户创建规则,自动将主题为“赌场”的电子邮件移至垃圾邮件文件夹。

$mbxs = Get-mailbox -organizationalUnit Managers
$mbxs | % { }
$mbxs | % { New-inboxrule -Name SpamMail -mailbox $_.alias -subjectcontainswords "[casino]" -movetofolder “$($_.alias):\Junk Email” }

要查看要在 Exchange 规则中使用的所有可用属性、条件和操作的列表:

Get-InboxRule -Mailbox john.doe | get-member

[玩转系统] 使用 PowerShell 管理 Exchange 中的收件箱规则

ApplyCategory
BodyContainsWords
CopyToFolder
DeleteMessage
Description
Enabled
FlaggedForAction
ForwardAsAttachmentTo
ForwardTo
From
FromAddressContainsWords
FromSubscription
HasAttachment
HasClassification
HeaderContainsWords
Identity
InError
IsValid
MailboxOwnerId
MarkAsRead
MarkImportance
MessageTypeMatches
MoveToFolder
MyNameInCcBox
MyNameInToBox
MyNameInToOrCcBox
MyNameNotInToBox
Priority
ReceivedAfterDate
ReceivedBeforeDate
RecipientAddressContainsWords
RedirectTo
RuleIdentity
SendTextMessageNotificationTo
SentOnlyToMe
SentTo
StopProcessingRules
SubjectContainsWords
SubjectOrBodyContainsWords
SupportedByTask
WithImportance
WithinSizeRangeMaximum
WithinSizeRangeMinimum
WithSensitivity

使用

-MessageTypeMatches Calendaring

参数来为 Exchange 邮箱中的日历邀请创建规则。

如果要在共享 Exchange 邮箱上创建收件箱规则,请确保您已被分配“组织管理”角色或已被授予“完全访问”权限。您可以使用 PowerShell 管理邮箱权限:

Add-MailboxPermission -Identity itdept -User john.doe -AccessRights FullAccess -AutoMapping:$false -InheritanceType All

要更改 Outlook 规则,请使用 Set-InboxRule cmdlet:

Set-InboxRule -Mailbox john.doe -identity SecretaryRule -FromAddressContainsWords {gmail.com}

提示。 Microsoft Exchange 邮箱中的规则大小是有限的。默认情况下,为 Exchange 2019/2016/2013/2010 中的收件箱规则分配 64 KB。如果超出规则的大小,则会发生错误:

One or more rules could not be uploaded to Exchange server and have been deactivated. This could be because some of the parameters are not supported or there is insufficient space to store all your rules.

仅考虑已启用的规则。邮箱中可以有无限数量的禁用规则。您可以使用以下命令将规则配额 (RulesQuota) 更改为 256 KB:

Set-Mailbox -identity john.doe -RulesQuota 256Kb

如何禁用和删除 Outlook 收件箱规则?

要禁用特定的 Outlook 收件箱规则,请使用以下命令:

Disable-Inboxrule -Mailbox john.doe -Identity “SecretaryRule”

其状态(已启用)将更改为 False,并且将不再应用于传入的电子邮件。

要完全删除收件箱规则,请运行以下命令:

Remove-Inboxrule -Mailbox john.doe -Identity SecretaryRule

该命令会提示您确认,您只需按

Y

。要从用户邮箱中删除所有规则,请运行以下命令:

Get-inboxrule -mailbox john.doe | Disable-Inboxrule

您可以通过使用附加参数运行它来从 Outlook 中删除所有邮箱规则:

Outlook.exe /cleanrules

它将删除 Outlook 配置文件中配置的所有邮箱的所有客户端规则和服务器规则。

如果您在尝试在邮箱中禁用或启用自动回复(外出)时收到错误消息:

The Out Of Office Rules cannot be displayed. The client operation failed.

或者

System resources are critically low.

[玩转系统] 使用 PowerShell 管理 Exchange 中的收件箱规则

问题的原因是邮箱中的规则损坏。使用 PowerShell 删除邮箱中的所有规则(包括隐藏规则)。

Get-InboxRule -Mailbox john.doe -IncludeHidden | Remove-InboxRule

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯