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

[玩转系统] 使用 PowerShell 管理共享邮箱 |办公室365

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

使用 PowerShell 管理共享邮箱 |办公室365


在本文中,您将了解如何管理 PowerShell 命令以在 Office 365 中创建共享邮箱。此外,您还将为这个新的共享邮箱分配不同的权限。我们将向您展示如何将共享邮箱转换为常规邮箱,以及相反。使用 PowerShell 获取 Office 365 中所有共享邮箱的列表。

Microsoft 365 邮箱类型

Microsoft 365 中有四种不同的邮箱类型:

  • 用户邮箱
  • 共享邮箱
  • 客房邮箱
  • 设备邮箱

在本文中,我们将介绍如何使用 PowerShell 管理共享邮箱

连接到 Exchange Online PowerShell

为了能够运行 PowerShell 命令,您需要连接到 Exchange Online PowerShell。

Connect-ExchangeOnline

1. 新建共享邮箱

共享邮箱是一种特殊类型的 Exchange 邮箱。为了通知 Exchange 我们要创建共享邮箱类型,我们使用参数-Shared

创建新的共享邮箱

PowerShell命令语法:

New-Mailbox -Name "Shared Mailbox Name" -Shared

使用以下 PowerShell 命令示例。

New-Mailbox -Name "Info Box" -Shared

PowerShell 输出显示您创建的新共享邮箱。

PS C:\> New-Mailbox -Name "Info Box" -Shared

Name                      Alias           Database                       ProhibitSendQuota   
----                      -----           --------                       -----------------   
Info Box                  InfoBox         EURPR02DG504-db416             49.5 GB (53,150,2...

了解更多:使用 PowerShell 批量创建共享邮箱 »

使用别名和电子邮件地址创建新的共享邮箱

在这一部分中,我们将向您展示如何创建新的共享邮箱,您可以在其中选择您的别名和电子邮件地址。

PowerShell命令语法:

New-Mailbox -Name "Shared Mailbox Name" -Alias "Alias" -Shared -PrimarySmtpAddress "Email Address"

使用以下 PowerShell 命令示例。

New-Mailbox -Name "Info Box2" -Alias "Info2" -Shared -PrimarySmtpAddress "[email protected]"

PowerShell 输出显示具有不同别名和电子邮件地址的新共享邮箱。

PS C:\> New-Mailbox -Name "Info Box2" -Alias "Info2" -Shared -PrimarySmtpAddress "[email protected]"

Name                      Alias           Database                       ProhibitSendQuota   
----                      -----           --------                       -----------------   
Info Box2                 Info2           EURPR02DG187-db101             49.5 GB (53,150,2...

运行这两个命令后,您将在 Microsoft 365 管理中心找到新的共享邮箱。

  1. 登录 Microsoft 365 管理中心
  2. 单击用户 > 活跃用户

[玩转系统] 使用 PowerShell 管理共享邮箱 |办公室365

2. 管理共享邮箱的权限

完全访问权限和自动地图功能

当我们为用户分配对另一个用户邮箱(例如示例中的共享邮箱)的“完全访问”权限时,该邮箱会自动添加到该用户的 Outlook 邮件配置文件中。此功能被描述为AutoMap

在某些场景下,我们需要禁用AutoMap选项。我们希望为特定用户启用对多个共享邮箱的完全访问权限。尽管如此,我们不希望这些共享邮箱自动添加到特定用户的 Outlook 配置文件中。

在这种情况下,我们可以添加 PowerShell 参数 -AutoMapping ,其值为 $False

分配共享邮箱 + AutoMap 的完全访问权限

在此步骤中,我们希望为特定用户分配对我们之前创建的共享邮箱具有完全访问权限。

PowerShell命令语法:

Add-MailboxPermission "Shared Mailbox" -User "Mail Recipient" -AccessRights FullAccess -InheritanceType All

使用以下 PowerShell 命令示例。

Add-MailboxPermission "Info Box" -User "Brenda Smith" -AccessRights FullAccess -InheritanceType All

分配共享邮箱的完全访问权限 + 无 AutoMap

使用以下 PowerShell 命令示例。

Add-MailboxPermission "Info Box" -User "Brenda Smith" -AccessRights FullAccess -InheritanceType All -AutoMapping $False

PowerShell 输出显示您已成功向特定用户分配“完全访问”权限。

PS C:\> Add-MailboxPermission "Info Box" -User "Brenda Smith" -AccessRights FullAccess -InheritanceType All -AutoMapping $False

Identity             User                 AccessRights                       IsInherited Deny 
--------             ----                 ------------                       ----------- ---- 
Info Box             S-1-5-21-70143928... {FullAccess}                       False       False

批量分配共享邮箱的完全访问权限 + 无 AutoMap

使用以下 PowerShell 命令为特定用户分配所有共享邮箱的完全访问权限。

Get-Mailbox -Filter '(RecipientTypeDetails -eq "SharedMailbox")' | Add-MailboxPermission -User "Brenda Smith" -AccessRights FullAccess -InheritanceType All -AutoMapping $False

PowerShell 输出将如下例所示。

PS C:\> Get-Mailbox -Filter '(RecipientTypeDetails -eq "SharedMailbox")' | Add-MailboxPermission -User "Brenda Smith" -AccessRights FullAccess -InheritanceType all -AutoMapping $False

Identity             User                 AccessRights                       IsInherited Deny 
--------             ----                 ------------                       ----------- ---- 
Info Box             S-1-5-21-70143928... {FullAccess}                       False       False
Info Box2            S-1-5-21-70143928... {FullAccess}                       False       False

如果您已将同一用户的完全访问权限分配给一个或多个共享邮箱,您将收到警告。 PowerShell 输出显示该用户已拥有共享邮箱的完全访问权限。

WARNING: The appropriate access control entry is already present on the object

对组和 AutoMap 功能的完全访问权限

当我们向分配完全访问权限时,AutoMap 功能不会激活。这是因为完全访问权限被授予组对象,而不是用户对象(组成员)。

在这种情况下,我们需要指导每个组成员如何为他们拥有完全访问权限的 Exchange 邮箱手动添加附加邮箱。

为了避免这种默认行为,我们可以使用 PowerShell 命令使用一些小技巧。

PowerShell 命令会将组成员提取到用户列表,并为每个用户(每个组成员)单独分配完全访问权限。

为每个组成员分配完全访问权限

PowerShell命令语法:

$DL = Get-DistributionGroupMember "Group Name" | Select-Object -ExpandProperty Name
foreach ($Member in $DL) {
    Add-MailboxPermission -Identity "Shared Mailbox" -User $Member -AccessRights 'FullAccess' -InheritanceType All
}

PowerShell 命令示例:

$DL = Get-DistributionGroupMember "[email protected]" | Select-Object -ExpandProperty Name
foreach ($Member in $DL) {
    Add-MailboxPermission -Identity "[email protected]" -User $Member -AccessRights 'FullAccess' -InheritanceType All
}

分配共享邮箱的发送权限

PowerShell命令语法:

Add-RecipientPermission "Shared Mailbox" -Trustee "Mail Recipient" -AccessRights SendAs -confirm:$False

使用下面的 PowerShell 示例为单个共享邮箱分配“发送为”权限。

Add-RecipientPermission "Info Box" -Trustee "Brenda Smith" -AccessRights SendAs -confirm:$False

PowerShell 输出将类似于以下示例。

PS C:\> Add-RecipientPermission "Info Box" -Trustee "Brenda Smith" -AccessRights SendAs -confirm:$False

Identity Trustee                              AccessControlType AccessRights Inherited
-------- -------                              ----------------- ------------ ---------
Info Box d912b0fc-6f7e-4ec2-a9e4-854ed27a511a Allow             {SendAs}     False    

为所有共享邮箱批量分配“代理发送”权限

您还可以在一个 PowerShell 命令中将特定用户的“发送为”权限分配给所有共享邮箱。

使用以下 PowerShell 命令示例。

Get-Mailbox -Filter '(RecipientTypeDetails -eq "SharedMailbox")' | Add-RecipientPermission -Trustee "Brenda Smith" -AccessRights SendAs -confirm:$False

运行上述命令后,PowerShell 输出示例如下所示。

PS C:\> Get-Mailbox -Filter '(RecipientTypeDetails -eq "SharedMailbox")' | Add-RecipientPermission -Trustee "Brenda Smith" -AccessRights SendAs -confirm:$False

Identity  Trustee                              AccessControlType AccessRights Inherited
--------  -------                              ----------------- ------------ ---------
Info Box  d912b0fc-6f7e-4ec2-a9e4-854ed27a511a Allow             {SendAs}     False    
Info Box2 d912b0fc-6f7e-4ec2-a9e4-854ed27a511a Allow             {SendAs}     False    

如果您已将同一用户的代理发送权限分配给一个或多个共享邮箱,您将收到警告。 PowerShell 输出显示该用户已拥有共享邮箱的完全访问权限。

WARNING: The appropriate access control entry is already present on the object

分配对共享邮箱日历的权限

要查看特定邮箱文件夹(例如日历文件夹)的权限,我们需要使用定义邮箱名称+特定文件夹名称的语法。

您可以通过运行 Get-MailboxFolderStatistics cmdlet 查找日历名称。

Get-Mailbox -Identity "Info Box" | Get-MailboxFolderStatistics -FolderScope Calendar | ft Identity,Name

鉴于 Exchange 邮箱是英语(定义为 MailboxRegionalConfiguration),我们使用的日历文件夹名称是“Calendar”。如果Exchange邮箱使用不同的邮箱区域配置,我们需要分别写入日历文件夹名称。

为共享邮箱日历分配发布编辑者权限

PowerShell 命令示例:

Add-MailboxFolderPermission -Identity "Info Box:\Calendar" -AccessRight PublishingEditor -User "Brenda Smith"

查看各类邮箱权限

查看有关完全访问和代理发送权限的信息

  • PowerShell cmdlet Get-MailboxPermission 显示邮箱权限
  • PowerShell cmdlet Get-RecipientPermission 显示“发送为”权限

这两个 PowerShell 命令的默认输出显示冗余信息,导致难以清楚地了解 Exchange 邮箱权限。为此,我们会对冗余信息进行过滤和去除。

查看共享邮箱的完全访问权限

PowerShell 命令示例

Get-MailboxPermission "Info Box" | Where-Object { ($_.IsInherited -eq $False) -and -not ($_.User -like "NT AUTHORITY\SELF") } | Select-Object Identity, user, AccessRights

查看共享邮箱的 SEND AS 权限

PowerShell 命令示例:

Get-RecipientPermission "Info Box" | Where-Object {($_.IsInherited -eq $False) -and -not ($_.Trustee -like "NT AUTHORITY\SELF") } | Select-Object Trustee, AccessRights

查看共享邮箱的日历权限

PowerShell 命令示例:

Get-MailboxFolderPermission -Identity "Info Box:\Calendar" | ft Identity,FolderName,User,AccessRights

删除权限 - 共享邮箱

删除共享邮箱的完全访问权限

PowerShell命令语法:

Remove-MailboxPermission "Shared Mailbox" -AccessRights "The type of permissions" -User "Recipient"

PowerShell 命令示例:

Remove-MailboxPermission "Info Box" -AccessRights FullAccess -User "Brenda Smith"

删除共享邮箱的 SEND AS 权限

PowerShell命令语法:

Remove-RecipientPermission "Shared Mailbox" -AccessRights "The type of permissions" -Trustee "Recipient"

PowerShell 命令示例:

Remove-RecipientPermission "Info Box" -AccessRights SendAs -Trustee "Brenda Smith"

删除发布编辑者对共享邮箱日历的权限

PowerShell命令语法:

Remove-MailboxFolderPermission "Shared Mailbox:\Calendar" -User "Identity"

PowerShell 命令示例:

Remove-MailboxFolderPermission "Info Box:\Calendar" -User "Brenda Smith"

3. 转换邮箱

共享邮箱可以转换为常规 Exchange 邮箱,反之亦然。

当我们将共享邮箱转换为用户邮箱(常规 Exchange 邮箱)时,我们必须将 Office 365 许可证分配给转换后的邮箱。

将普通邮箱转换为共享邮箱

PowerShell命令语法:

Set-Mailbox "User Mailbox" -Type Shared

PowerShell 命令示例:

Set-Mailbox "Brenda Smith" -Type Shared

了解更多:将用户邮箱转换为共享邮箱 »

将共享邮箱转换为常规邮箱

PowerShell命令语法:

Set-Mailbox "Shared Mailbox" -Type Regular

PowerShell 命令示例:

Set-Mailbox "Info Box" -Type Regular

了解更多:将共享邮箱转换为用户邮箱 »

4. 共享邮箱具体设置

将共享邮箱大小设置为 10 GB

PowerShell命令语法:

Set-Mailbox "Shared Mailbox" -ProhibitSendReceiveQuota "Size" -ProhibitSendQuota "Size" -IssueWarningQuota "Size"

PowerShell 命令示例:

Set-Mailbox "Info Box" -ProhibitSendReceiveQuota 10GB -ProhibitSendQuota 9.75GB -IssueWarningQuota 9.5GB

使用“代理发送”权限时,将共享邮箱设置为“保存已发送邮件项目的副本”

定义共享邮箱和已发送邮件文件夹的行为

在我们将 SEND AS 权限分配给共享邮箱上的收件人的情况下,当收件人代表共享邮箱(使用其 SEND AS 权限)发送电子邮件时,默认情况下将保存发送的邮件,在共享邮箱的“已发送邮件”中,但已发送邮件的副本不会保存在收件人的邮箱中。

要更改此默认行为,我们可以使用 PowerShell 参数 -MessageCopyForSentAsEnabled。

PowerShell 命令示例:

Set-Mailbox "Info Box" -MessageCopyForSentAsEnabled $True

查看共享邮箱“保存已发送邮件的副本”设置

PowerShell 命令示例:

Get-Mailbox "Info Box" | Format-List Alias, MessageCopy*

了解更多:将已发送的邮件保存在共享邮箱中 »

5.导出共享邮箱信息

获取现有共享邮箱的列表

使用 PowerShell 命令获取所有共享邮箱的列表。

Get-Mailbox -Filter '(RecipientTypeDetails -eq "SharedMailbox")' | Select-Object DisplayName,Alias,RecipientTypeDetails,PrimarySmtpAddress

PowerShell 输出如下例所示。

PS C:\> Get-Mailbox -Filter '(RecipientTypeDetails -eq "SharedMailbox")' | Select-Object DisplayName,Alias,RecipientTypeDetails,PrimarySmtpAddress

DisplayName Alias   RecipientTypeDetails PrimarySmtpAddress   
----------- -----   -------------------- ------------------   
Info Box    InfoBox SharedMailbox        [email protected] 
Info Box2   Info2   SharedMailbox        [email protected]

将现有共享邮箱列表导出到 CSV 文件

您可以将所有现有共享邮箱的信息导出到单个 CSV 文件。这样,您就可以轻松搜索不同的共享邮箱。

PowerShell 命令示例:

Get-Mailbox -Filter '(RecipientTypeDetails -eq "SharedMailbox")' | Select-Object DisplayName,Alias,RecipientTypeDetails,PrimarySmtpAddress | Export-CSV C:\temp\"Shared Mailboxes Info.CSV" -NoTypeInformation -Encoding UTF8

导出信息后,您可以在 C:\temp 文件夹中找到 CSV 文件。

使用 Microsoft Excel 等应用程序打开 CSV 文件以查看结果。

[玩转系统] 使用 PowerShell 管理共享邮箱 |办公室365

6. 删除共享邮箱

您可以使用 PowerShell 轻松软删除特定的共享邮箱。这意味着删除的共享邮箱将在 Azure AD 回收站中保留 30 天,然后才会被永久删除。您可以使用 PowerShell 在管理 Office 365 回收站中还原已删除的共享邮箱。

软删除共享邮箱

您可以软删除单个共享邮箱。

PowerShell命令语法:

Remove-Mailbox -Identity "Shared Identity" -Confirm:$false

PowerShell 命令示例:

Remove-Mailbox -Identity "Info Box" -Confirm:$false

批量软删除共享邮箱

使用以下 PowerShell 命令批量软删除共享邮箱。

Get-Mailbox -Filter '(RecipientTypeDetails -eq "SharedMailBox")' -ResultSize Unlimited | Remove-Mailbox -Confirm:$false

硬删除共享邮箱

如果您想永久硬删除邮箱,则需要执行几个步骤。请阅读使用 PowerShell 强制删除 Microsoft 365 邮箱一文来了解更多相关信息。

这是否有助于您使用 PowerShell 管理 Office 365 共享邮箱?

了解更多:在 Microsoft 365 中配置捕获所有邮箱 »

结论

您学习了如何使用 PowerShell 创建新的共享邮箱。您已成功为共享邮箱分配和删除不同的权限。将共享邮箱转换为普通用户邮箱很容易,反之亦然。此外,您还可以使用 PowerShell 将所有共享邮箱的信息导出到 CSV 文件。

您喜欢这篇文章吗?您可能还喜欢使用 Microsoft Graph PowerShell 发送电子邮件。不要忘记关注我们并分享这篇文章。

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

取消回复欢迎 发表评论:

关灯