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

[玩转系统] 使用 PowerShell 管理转发邮件 |办公室365

作者:精品下载站 日期:2024-12-14 08:38:58 浏览:14 分类:玩电脑

使用 PowerShell 管理转发邮件 |办公室365


将邮件从组织中的用户邮箱转发到内部或外部用户电子邮件地址。如果您想阅读并回复来自其他电子邮件帐户的邮件,或者您希望其他人在您不在时接收并回复您的电子邮件,则此功能非常有用。在本文中,您将了解如何在 Exchange Online (Microsoft 365) 中使用 PowerShell 管理转发邮件。

使用 PowerShell 转发邮件

转发电子邮件规则会自动将发送到特定邮箱的每封电子邮件启用到其他电子邮件地址。

通过电子邮件转发,您可以设置邮箱,将发送到用户邮箱的电子邮件转发到组织内部或外部的其他用户的邮箱。

目标收件人的电子邮件地址可以是:

  • 内部邮箱:来自您组织的收件人
  • 外部邮箱:组织外部的收件人

上述每个选项都有一个不同的 PowerShell 参数。另一个参数是在转发邮件的源收件人邮箱中保留电子邮件的副本。

Forward parameterInternalExternalUser notifiedUser editAdmin edit-ForwardingAddressxx-ForwardingSmtpAddressxxxxx

我们将向您展示一些使用 PowerShell 管理 Microsoft 365 转发邮件的示例:

  • 邮件转发到内部收件人:David 和 Amanda 是属于同一 Microsoft 365 域名 a-d.site 的收件人。
  • 邮件转发到外部收件人:David 希望将他收到的每封邮件转发到外部电子邮件地址 [email protected]
  • 实现对外联系的邮件转发。
  • 批量邮件转发:将所有 Microsoft 365 用户邮箱的电子邮件转发到目标电子邮件地址。

连接到 Exchange Online PowerShell

为了能够运行本文中指定的 PowerShell 命令,您需要连接到 Exchange Online PowerShell。

Connect-ExchangeOnline

以管理员身份启动 Windows PowerShell 并运行 cmdlet Connect-ExchangeOnline

1.设置邮件转发

您可以使用以下两个参数将发送到用户邮箱的所有电子邮件转发到另一个电子邮件地址:

  • 转发地址(内部收件人)
  • ForwardingSmtpAddress(内部和外部收件人)

这两个参数之间的主要区别在于,-ForwardingAddress 仅用于内部电子邮件地址,而-ForwardingSmtpAddress 用于外部电子邮件地址。此外,使用-ForwardAddress不会通知用户他们的邮件正在被转发。这意味着用户无法查看或更改这些转发设置,只有管理员才能这样做。

使用 ForwardingAddress 并且不保存本地电子邮件副本

我们希望将发送到用户邮箱的所有电子邮件转发给同一组织内部的另一个用户。默认情况下,它不会在用户邮箱中保留转发电子邮件的副本。

注意:当您使用参数-ForwardingAddress时,用户将不知道发送的电子邮件已转发到另一个邮箱。用户看不到转发地址,这意味着只有管理员才能更改这些转发设置。

在我们的示例中,我们希望发送到 [email protected] 的电子邮件仅传送到转发邮箱 [email protected]嗯>。

PowerShell命令语法:

Set-Mailbox -Identity "UPN" -ForwardingAddress "Forward Mailbox"

PowerShell 命令示例:

Set-Mailbox -Identity "[email protected]" -ForwardingAddress "[email protected]"

邮箱所有者 (David Kent) 将无法查看和更改这些邮件转发设置。

使用 ForwardingAddress 并保存本地副本电子邮件

默认情况下,-DeliverToMailboxAndForward 参数设置为 $False,这意味着邮件仅传送到转发地址。如果该参数设置为 $True,邮件将被发送到邮箱和转发地址。

在我们的示例中,我们希望将发送到 [email protected] 的所有电子邮件转发给同一组织中的另一个用户 [email protected]。在这种情况下,两个邮箱都会在其收件箱中收到电子邮件。

PowerShell命令语法:

Set-Mailbox -Identity "UPN" -ForwardingAddress "Forward Mailbox" -DeliverToMailboxAndForward $True

PowerShell 命令示例:

Set-Mailbox -Identity "[email protected]" -ForwardingAddress "[email protected]" -DeliverToMailboxAndForward $True

邮箱所有者 (David Kent) 将无法查看和更改这些邮件转发设置。

使用 ForwardingSmtpAddress 并且不保存本地副本电子邮件

您可以将发送到用户邮箱的电子邮件转发到内部外部电子邮件地址。默认情况下,它不会在用户邮箱中保留转发电子邮件的副本。

注意:使用参数-ForwardingSmtpAddress将电子邮件转发到内部或外部邮箱。用户邮箱将了解转发设置并可以更改此设置。

在我们的示例中,我们希望发送到 [email protected] 的电子邮件仅传送到转发外部邮箱 [email protected]

PowerShell命令语法:

Set-Mailbox -Identity "UPN" -ForwardingSmtpAddress "Forward Mailbox"

PowerShell 命令示例:

Set-Mailbox -Identity "[email protected]" -ForwardingSmtpAddress "[email protected]"

邮箱所有者 (David Kent) 将知道电子邮件正在转发到 [email protected],并且可以更改这些邮件转发设置。

使用 ForwardingSmtpAddress 并保存本地副本电子邮件

默认情况下,-DeliverToMailboxAndForward 设置为 $False,这意味着邮件仅传送到转发地址。我们将参数设置为$True,这样邮件就会被传递到邮箱和转发地址。

在我们的示例中,我们将向您展示如何将来自 [email protected] 的电子邮件转发到外部邮箱,以便双方都能收到电子邮件。

PowerShell命令语法:

Set-Mailbox -Identity "UPN" -ForwardingSmtpAddress "Forward Mailbox" -DeliverToMailboxAndForward $True

PowerShell 命令示例:

Set-Mailbox -Identity "[email protected]" -ForwardingSmtpAddress "[email protected]" -DeliverToMailboxAndForward $True

邮箱所有者 (David Kent) 可以查看和更改这些邮件转发设置。

创建外部联系人以转发电子邮件

如果您想在用户不知情的情况下将电子邮件转发到另一个邮箱,则需要创建外部联系人。

在我们的示例中,我们将创建一个新联系人并使用外部电子邮件地址。

PowerShell命令语法:

New-MailContact -Name "Display Name" -ExternalEmailAddress "External Recipient Email Address"

运行以下 PowerShell 命令示例:

New-MailContact -Name "Suzan Wilkins" -ExternalEmailAddress "[email protected]"

PowerShell 输出显示您新创建的联系人:

PS C:\> New-MailContact -Name "Suzan Wilkins" -ExternalEmailAddress "[email protected]"

Name                      Alias                                       RecipientType
----                      -----                                       -------------
Suzan Wilkins             SuzanWilkins                                MailContact  

使用 ForwardingAddress 与外部联系人联系

在上一步中,您使用外部电子邮件地址创建了一个新联系人。您可以将电子邮件从用户邮箱转发到此外部电子邮件地址,而无需让用户邮箱知道这些转发设置。

在我们的示例中,我们会将发送到 [email protected] 的所有电子邮件转发给外部联系人 [email protected]

运行以下 PowerShell 命令示例:

Set-Mailbox -Identity "[email protected]" -ForwardingAddress "[email protected]" -DeliverToMailboxAndForward $False

结果是用户(David)不会知道这些更改,因为用户看不到这些电子邮件转发设置,这意味着只有管理员可以更改这些设置。此外,用户邮箱中没有保存转发电子邮件的副本。

2. 显示特定邮箱转发设置的信息

我们将向您展示如何显示有关组织中单个邮箱和所有用户邮箱的电子邮件转发设置的信息。

显示特定邮箱的转发信息

您可以显示信息转发设置,包括特定邮箱的ForwardAddressForwardSmtpAddress

在我们的示例中,我们将向您展示[email protected]的转发信息设置。

PowerShell命令语法:

Get-Mailbox "UPN" | ft DisplayName, UserPrincipalName, ForwardingSmtpAddress, ForwardingAddress, DeliverToMailboxAndForward

运行以下 PowerShell 示例:

Get-Mailbox "[email protected]" | ft DisplayName, UserPrincipalName, ForwardingSmtpAddress, ForwardingAddress, DeliverToMailboxAndForward

PowerShell 输出示例:

PS C:\> Get-Mailbox "[email protected]" | ft DisplayName, UserPrincipalName, ForwardingSmtpAddress, ForwardingAddress, DeliverToMailboxAndForward

DisplayName UserPrincipalName       ForwardingSmtpAddress     ForwardingAddress DeliverToMailboxAndForward
----------- -----------------       ---------------------     ----------------- --------------------------
David Kent  [email protected] smtp:[email protected] Suzan Wilkins                          False

显示包含 FowardingAddress 和 ForwardingSmtpAddress 的所有邮箱的列表

显示将地址转发给内部或外部收件人的所有邮箱的列表。

PowerShell 命令示例:

Get-Mailbox -ResultSize Unlimited | Where { ($_.ForwardingAddress -ne $null) -or ($_.ForwardingSmtpAddress -ne $null) } | Select UserPrincipalName, ForwardingAddress, ForwardingSmtpAddress, DeliverToMailboxAndForward

PowerShell 输出示例:

PS C:\> Get-Mailbox -ResultSize Unlimited | Where { ($_.ForwardingAddress -ne $null) -or ($_.ForwardingSmtpAddress -ne $null) } | Select UserPrincipalName, ForwardingAddress, ForwardingSmtpAddress, DeliverToMailboxAndForward

UserPrincipalName          ForwardingAddress                    ForwardingSmtpAddress        DeliverToMailboxAndForward
-----------------          -----------------                    ---------------------        --------------------------
[email protected]                                      smtp:[email protected]                          True
[email protected]  41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5                                                    True
[email protected]    Suzan Wilkins                        smtp:[email protected]                         False
[email protected]    David Wilkins                                                                           True

3.禁用或删除电子邮件转发邮箱

我们想向您展示如何禁用单个邮箱和所有邮箱的电子邮件转发选项。我们必须使用 $null 值来删除电子邮件转发地址。

禁用特定邮箱的转发地址

您可以禁用特定邮箱的转发地址。在我们的示例中,我们将删除 [email protected] 的转发地址。

PowerShell命令语法:

Set-Mailbox "UPN" -ForwardingAddress $null

运行以下 PowerShell 示例:

Set-Mailbox "[email protected]" -ForwardingAddress $null

禁用特定邮箱的 ForwardingSmtpAddress

我们想要展示如何禁用单个邮箱的 ForwardingSmtpAddress(外部收件人)。在我们的示例中,我们将删除 [email protected] 的外部转发地址。

PowerShell命令语法:

Set-Mailbox "UPN" -ForwardingSmtpAddress $null

运行以下 PowerShell 命令示例:

Set-Mailbox "[email protected]" -ForwardingSmtpAddress $null

批量禁用所有邮箱的 ForwardingAddress

我们将向您展示如何禁用 Microsoft 365 邮箱的所有转发地址。

运行以下 PowerShell 命令:

Get-Mailbox -ResultSize Unlimited | Where-Object {($_.ForwardingAddress -ne $null) } | Set-Mailbox -ForwardingAddress $null

批量禁用所有邮箱的 ForwardingSmtpAddress

批量禁用 Microsoft 365 邮箱的所有 ForwardingSmtpAddresses。

运行以下 PowerShell 命令:

Get-Mailbox -ResultSize Unlimited | Where-Object {($_.ForwardingSmtpAddress -ne $null) } | Set-Mailbox -ForwardingSmtpAddress $null

4. 导出所有电子邮件转发设置的信息

您可以导出有关组织中 Microsoft 365 邮箱的所有转发电子邮件地址的信息。这样,您将可以更好地概览来搜索不同的内部或外部电子邮件地址。

要将信息导出到 CSV 文件,您需要创建一个文件夹:

  1. 创建一个名为 temp 的文件夹
  2. 将其保存在(C:)驱动器中

将所有转发地址的信息导出至 CSV

您可以将具有内部(ForwardAddress) 和外部(ForwardSmtpAddress) 电子邮件地址的所有邮箱的信息导出到 CSV 文件。

运行以下 PowerShell 命令:

Get-Mailbox -ResultSize Unlimited | Where-Object {$_.ForwardingAddress -ne $null -or $_.ForwardingSmtpAddress -ne $null } | Select-Object DisplayName, Alias, UserPrincipalName, ForwardingAddress, ForwardingSmtpAddress, DeliverToMailboxAndForward, RecipientType, RecipientTypeDetails | Export-Csv "C:\temp\All Recipients Forwarding Addresses.csv" -NoTypeInformation -Encoding UTF8

转到 (C:) 驱动器中的 temp 文件夹,然后使用 Microsoft Excel 打开 CSV 文件以查看结果。

[玩转系统] 使用 PowerShell 管理转发邮件 |办公室365

将有关用户收件箱转发规则的信息导出到 CSV

您可以将所有邮箱的用户收件箱转发规则的信息导出到 CSV 文件。

运行以下 PowerShell 脚本:

# Define an array to store the results
$UserInboxRuleResults = @()

# Go through each mailbox
ForEach ($mailbox in (Get-Mailbox -ResultSize Unlimited)) {
    # Retrieve inbox rules for the current mailbox
    $inboxRules = Get-InboxRule -Mailbox $mailbox.DistinguishedName

    # Filter rules with forwarding enabled
    $forwardingRules = $inboxRules | Where-Object { $_.ForwardTo }

    # Process forwarding rules
    ForEach ($rule in $forwardingRules) {
        $ruleInfo = [PSCustomObject]@{
            UserPrincipalName = $mailbox.UserPrincipalName
            RuleName          = $rule.Name
            ForwardTo         = $rule.ForwardTo
            Description       = $rule.Description
        }
        # Add the rule info to the results array
        $UserInboxRuleResults += $ruleInfo
    }
}

# Export the results to a CSV file
$UserInboxRuleResults | Export-Csv -Path "C:\temp\UserInboxRules.csv" -NoTypeInformation -Encoding UTF8

5. 将所有用户的电子邮件批量转发到单个电子邮件地址

我们想向您展示如何将电子邮件从所有用户邮箱批量转发到组织中的单个电子邮件地址。

将所有用户的电子邮件转发给内部收件人并保存电子邮件副本

当您将电子邮件从用户邮箱转发到另一个电子邮件地址时,默认情况下不会在用户收件箱中保存电子邮件的副本。如果您希望组织中的所有用户继续接收电子邮件并将其转发到另一个邮箱,则应按照以下步骤操作。

  1. 在用户邮箱中保存电子邮件的本地副本

PowerShell命令语法:

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientType -eq "UserMailbox"} | Set-Mailbox -DeliverToMailboxAndForward $True
  1. 将所有用户的电子邮件转发至内部目标收件人

运行以下 PowerShell 示例:

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientType -eq "UserMailbox"} | Set-Mailbox -ForwardingAddress "[email protected]"

将所有用户的电子邮件转发给外部收件人并保存电子邮件副本

我们会将发送给我们组织中的用户的所有电子邮件转发到外部电子邮件地址,并保存电子邮件的副本。这意味着我们希望将邮件传递到邮箱和转发地址。如果您不想在用户邮箱中保留电子邮件副本,可以跳过下面的第一步。

  1. 在用户邮箱中保存电子邮件的本地副本

PowerShell命令语法:

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientType -eq "UserMailbox"} | Set-Mailbox -DeliverToMailboxAndForward $True
  1. 将电子邮件转发给目标收件人(外部组织收件人)
Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientType -eq "UserMailbox"} | Set-Mailbox -ForwardingSmtpAddress "External Recipient Email Address"

运行以下 PowerShell 命令:

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientType -eq "UserMailbox"} | Set-Mailbox -ForwardingSmtpAddress "[email protected]"

从 CSV 文件导入以将电子邮件转发给外部收件人并保存本地副本

每次电子邮件到达邮箱时,您都可以将电子邮件转发给外部收件人。如果您的组织中只有少数用户将电子邮件转发给外部收件人,您可以创建一个 CSV 文件来导入它并在脚本中使用它。我们将向您展示两种必须创建不同 CSV 文件的场景。

场景 1:

我们希望将电子邮件从组织中的多个用户邮箱转发到同一内部收件人

创建一个包含单列的 CSV 文件:

  1. 打开记事本Microsoft Excel
  2. 在顶部输入用户
  3. 列出邮箱

[玩转系统] 使用 PowerShell 管理转发邮件 |办公室365

  1. 如果 (C:) 驱动器中还没有文件夹 temp,请创建该文件夹
  2. 将文件命名为Users.csv
  3. 保存类型 所有文件 (*)
  4. 点击保存

[玩转系统] 使用 PowerShell 管理转发邮件 |办公室365

  1. 使用 Import-Csv cmdlet 检查 CSV 文件

以管理员身份运行 Windows PowerShell。要确保 PowerShell 可以读取该文件,请运行 Import-Csv cmdlet。

Import-Csv "C:\temp\Users.csv"
  1. 启用选项DeliverToMailboxAndForward(可选)
$Mailboxes = Import-Csv "C:\temp\Users.csv" -Encoding UTF8
ForEach ($Mailbox in $Mailboxes)
{ Set-Mailbox $Mailbox.users -DeliverToMailboxAndForward $True }
  1. 转发电子邮件至内部目标收件人
$Mailboxes = Import-Csv "C:\temp\Users.csv" -Encoding UTF8
ForEach ($Mailbox in $Mailboxes)
{ Set-Mailbox $Mailbox.users -ForwardingAddress "[email protected]" }

场景 2:

我们希望将电子邮件从组织中的用户邮箱转发到不同的内部或外部收件人,无论是否保存转发电子邮件的本地副本。

创建 CSV 文件:

  1. 打开Microsoft Excel
  2. 输入邮箱条件转发至作为列标题
  3. 在第一列中列出邮箱(在邮箱下)
  4. 在第二列(在条件下)输入TrueFalse
  5. 在第三列中列出邮箱(在ForwardTo下)

[玩转系统] 使用 PowerShell 管理转发邮件 |办公室365

  1. 将 CSV 文件保存在 (C:) 驱动器中
  2. 将文件命名为Users.csv
  3. 另存为 CSV UTF-8

[玩转系统] 使用 PowerShell 管理转发邮件 |办公室365

  1. 运行以下 PowerShell 脚本
# Import the CSV file
$users = Import-Csv -Path "C:\temp\Users.csv"

# Loop through each row in the CSV data
ForEach ($user in $users) {
    $identity = $user.mailbox
    $forwardTo = $user.forwardto
    $condition = $user.condition -eq "True"

    # Set the mailbox forwarding settings
    Set-Mailbox -Identity $identity -ForwardingSmtpAddress $forwardTo -DeliverToMailboxAndForward $condition
}

这是否有助于您在组织中使用 PowerShell 管理 Microsoft 365 转发邮件?

阅读更多内容:使用 Microsoft Graph PowerShell 发送电子邮件 »

结论

您了解了如何使用 PowerShell Exchange Online 管理转发邮件。使用 PowerShell,您可以设置或删除单个邮箱或所有邮箱的电子邮件转发。还可以显示有关转发设置的信息或将信息导出到 CSV 文件。最后,您可以将用户邮箱批量转发给内部或外部收件人。

您喜欢这篇文章吗?您可能还喜欢启用或禁用 Exchange ActiveSync 邮箱。不要忘记关注我们并分享这篇文章。

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

取消回复欢迎 发表评论:

关灯