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

[玩转系统] 使用 PowerShell 管理邮箱文件夹权限

作者:精品下载站 日期:2024-12-14 05:52:39 浏览:15 分类:玩电脑

使用 PowerShell 管理邮箱文件夹权限


当您与其他用户共享邮箱文件夹时,您可以决定他们将获得哪些访问权限。管理员可以在 PowerShell 中为单个和批量用户获取、添加、设置和删除文件夹权限。在本文中,您将了解如何使用 Exchange Online PowerShell 管理邮箱文件夹权限。

邮箱文件夹权限

共享邮箱文件夹使其他用户能够访问特定的 Outlook 文件夹,例如日历联系人任务

要与其他用户共享邮箱文件夹,您需要决定:

  • 您想要与其共享邮箱文件夹的用户(或组)
  • 您要启用的权限级别

默认情况下,用户有权在日历文件夹中查看其他用户的空闲或忙碌时间。如果您希望允许其他用户获取有关会议的更多信息,您可以更改默认权限并让其他用户查看有关会议的其他信息,例如会议主题和地点。

每个用户都可以与单个或多个用户共享其邮箱文件夹以及 OutlookOWA 中的权限级别。您需要向每个用户发送邀请并等待用户接受。为了避免任何错误配置,使用 PowerShell 更快、更容易。

角色和权限列表

-AccessRights 参数还指定具有以下角色的用户的权限。请参阅下面的角色列表,以及您向邮箱文件夹分配访问权限时所附带的权限。

RolesPermissionsNoneNo permission to access folders and filesOwnerCreateItems, ReadItems, CreateSubfolders, FolderOwner, FolderContact, FolderVisible, EditOwnedItems, EditAllItems, DeleteOwnedItems, DeleteAllItemsPublishingEditorCreateItems, ReadItems, CreateSubfolders, FolderVisible, EditOwnedItems, EditAllItems, DeleteOwnedItems, DeleteAllItemsEditorCreateItems, ReadItems, FolderVisible, EditOwnedItems, EditAllItems, DeleteOwnedItems, DeleteAllItemsPublishingAuthorCreateItems, ReadItems, CreateSubfolders, FolderVisible, EditOwnedItems, DeleteOwnedItemsAuthorCreateItems, ReadItems, FolderVisible, EditOwnedItems, DeleteOwnedItemsNonEditingAuthorCreateItems, ReadItems, FolderVisibleReviewerReadItems, FolderVisibleContributorCreateItems, FolderVisible

这两个附加角色仅适用于日历文件夹。

LimitedDetails

查看包含主题和位置的可用性数据(空闲/忙碌时间、主题、位置)

AvailabilityOnly

仅查看可用性数据(空闲/忙碌时间)

连接到 Exchange Online

为了能够运行 PowerShell 命令,您必须连接到 Exchange Online PowerShell。以管理员身份打开 Windows PowerShell,运行以下 cmdlet,然后使用管理员凭据登录。

Connect-ExchangeOnline

1.为日历或通讯录文件夹添加文件夹权限

只有获得许可的邮箱才能与其他用户或组共享其文件夹。在我们的示例中,我们希望授予用户发布编辑者访问其他用户文件夹的权限。

我们将使用 Add-MailboxFolderPermission PowerShell cmdlet 为邮箱中的用户添加文件夹级别权限。

[玩转系统] 使用 PowerShell 管理邮箱文件夹权限

邮箱文件夹权限命令的基本结构使用以下 PowerShell 语法。

Add-MailboxFolderPermission -Identity "[email protected]:\Calendar" -User "[email protected]" -AccessRights "PublishingEditor"
  • -Identity 参数是想要共享其文件夹的用户(向其他用户提供访问其日历内容的选项)。
  • -User 参数表示将有权访问日历的用户。

注意:来自使用非英语语言的其他国家/地区的用户对日历联系人和其他文件夹有不同的名称。因此,我们始终会在命令和脚本中添加 Get-MailboxFolderStatistics PowerShell cmdlet 以检索正确的名称。

将发布编辑器权限添加到日历文件夹

您可以为用户分配对不同语言或国家/地区的日历文件夹的发布编辑权限。在我们的示例中,用户([email protected])来自荷兰,并且使用不同的语言(荷兰语),因此文件夹的名称不会是日历议程

我们希望为用户 [email protected] 分配对 [email protected] 日历文件夹的发布编辑权限。 PowerShell脚本会自动转换不同语言的文件夹名称并添加文件夹权限。

  1. 第 1 行中指定要共享文件夹的邮箱
  2. 第 2 行中指定您要添加权限的用户
  3. 运行 PowerShell 脚本
$mailbox = "[email protected]"
$user = "[email protected]"

$folder = (Get-MailboxFolderStatistics -Identity "$($mailbox)" | Where-Object { $_.FolderType -eq "Calendar" }).Name
Add-MailboxFolderPermission "$($mailbox):$($folder)" -User "$($user)" -AccessRights "PublishingEditor" | Select-Object FolderName, User, AccessRights

PowerShell 输出结果显示,用户 Stephen Hunter 拥有对文件夹名称 Agenda 的访问权限,在荷兰语中,该文件夹的意思是日历

FolderName User           AccessRights
---------- ----           ------------
Agenda     Stephen Hunter {PublishingEditor}

用户Stephen Hunter可以打开Brenda Smith的共享日历。这意味着用户 Stephen Hunter 有权创建、编辑和删除此日历文件夹中的条目。

注意:日历文件夹不会自动显示在用户邮箱中。用户需要手动将其添加到OWAOutlook中。

添加发布编辑器权限以批量处理所有日历文件夹

您可以为单个用户分配对所有用户的日历文件夹具有特定权限的权限。

[玩转系统] 使用 PowerShell 管理邮箱文件夹权限

在我们的示例中,我们希望为用户分配对所有用户的日历文件夹具有发布编辑权限的用户([email protected]) 。请记住,您始终可以删除这些权限,我们将在接下来的步骤中向您展示。

  1. 第 1 行上指定用户邮箱
  2. 运行以下 PowerShell 脚本
$user = "[email protected]"
$mailboxes = Get-Mailbox -Resultsize Unlimited

# Loop through each mailbox
foreach ($mailbox in $mailboxes) {
    # Get calendar folder name for the current mailbox and store it in the variable $folder
    $folder = (Get-MailboxFolderStatistics -Identity $mailbox.PrimarySmtpAddress | Where-Object { $_.FolderType -eq "Calendar" }).Name

    # Add mailbox folder permissions for all calendar folders
    Add-MailboxFolderPermission -Identity "$($mailbox.PrimarySmtpAddress):$($folder)" -User $($user) -AccessRights "PublishingEditor"  | Select-Object Identity, FolderName, User, AccessRights
}

它将允许用户 [email protected] 拥有发布编辑权限来访问所有用户的日历文件夹。

Identity                                       FolderName User         AccessRights
--------                                       ---------- ----         ------------
0de964ae-f09a-4e65-bc8c-cbeac2745e4c:\Calendar Calendar   Brenda Smith {PublishingEditor}
41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5:\Calendar Calendar   Brenda Smith {PublishingEditor}
f8261d51-3df9-4f21-a6b1-533412669c11:\Calendar Calendar   Brenda Smith {PublishingEditor}
7bfec79d-7806-484a-ac83-133cd4cf5af5:\Calendar Calendar   Brenda Smith {PublishingEditor}
82cd0d62-e974-4892-aca6-e0387abc62be:\Calendar Calendar   Brenda Smith {PublishingEditor}
5f4d37cd-383c-413f-87a2-aab0dc6a531a:\Calendar Calendar   Brenda Smith {PublishingEditor}
0f38d53f-cbe0-4844-86e9-1032a45ba31b:\Agenda   Agenda     Brenda Smith {PublishingEditor}
411a8f10-0dfa-4034-a1e3-a8b6e4cad2f6:\Calendar Calendar   Brenda Smith {PublishingEditor}
52a6c1c7-77d2-4109-99b9-a4076167b6e2:\Calendar Calendar   Brenda Smith {PublishingEditor}
2dead2c4-7baf-4899-a7d1-dfa73f4d445d:\Calendar Calendar   Brenda Smith {PublishingEditor}

将发布编辑器权限添加到“联系人”文件夹

我们将为单个用户分配对特定用户的联系人文件夹的权限。首先,我们向您展示了如何向日历文件夹添加权限,但现在我们将对联系人文件夹执行相同的操作。

要添加对特定邮箱文件夹的权限,您需要使用 Add-MailboxFolderPermission PowerShell cmdlet。

在我们的示例中,我们将为用户 [email protected] 分配发布编辑权限,以访问联系人文件夹[email protected]

  1. 第 1 行中指定要共享文件夹的邮箱
  2. 第 2 行中指定您要添加权限的用户
  3. 运行 PowerShell 脚本
$mailbox = "[email protected]"
$user = "[email protected]"

$folder = (Get-MailboxFolderStatistics -Identity "$($mailbox)" | Where-Object { $_.FolderType -eq "Contacts" }).Name
Add-MailboxFolderPermission "$($mailbox):$($folder)" -User "$($user)" -AccessRights "PublishingEditor" | Select-Object FolderName, User, AccessRights

PowerShell 输出结果。

FolderName      User           AccessRights
----------      ----           ------------
Contactpersonen Stephen Hunter {PublishingEditor}

用户Stephen Hunter可以打开Brenda Smith的共享联系人。这也意味着用户 Stephen Hunter 有权在联系人文件夹中创建、编辑和删除条目。

注意:联系人文件夹不会自动显示在用户邮箱中。用户需要手动将其添加到OWAOutlook中。

添加发布编辑器权限以批量处理所有联系人文件夹

您可以为单个用户分配对所有用户的联系人文件夹具有特定权限的权限。

[玩转系统] 使用 PowerShell 管理邮箱文件夹权限

在我们的示例中,我们希望为用户分配对所有用户的联系人文件夹具有发布编辑权限的用户([email protected])。请记住,您始终可以删除这些权限,我们将在接下来的步骤中向您展示。

  1. 第 1 行上指定用户邮箱
  2. 运行以下 PowerShell 脚本
$user = "[email protected]"
$mailboxes = Get-Mailbox -Resultsize Unlimited

# Loop through each mailbox
foreach ($mailbox in $mailboxes) {
    # Get folder name for the current mailbox and store it in the variable $folder
    $folder = (Get-MailboxFolderStatistics -Identity $mailbox.PrimarySmtpAddress | Where-Object { $_.FolderType -eq "Contacts" }).Name

    # Add mailbox folder permissions for all contacts folders
    Add-MailboxFolderPermission -Identity "$($mailbox.PrimarySmtpAddress):$($folder)" -User $($user) -AccessRights "PublishingEditor"  | Select-Object Identity, FolderName, User, AccessRights
}

它将允许用户 [email protected] 对所有用户的联系人文件夹拥有发布编辑权限。

Identity                                       FolderName User         AccessRights
--------                                       ---------- ----         ------------
0de964ae-f09a-4e65-bc8c-cbeac2745e4c:\Contacts Contacts   Brenda Smith {PublishingEditor}
41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5:\Contacts Contacts   Brenda Smith {PublishingEditor}
f8261d51-3df9-4f21-a6b1-533412669c11:\Contacts Contacts   Brenda Smith {PublishingEditor}
7bfec79d-7806-484a-ac83-133cd4cf5af5:\Contacts Contacts   Brenda Smith {PublishingEditor}
82cd0d62-e974-4892-aca6-e0387abc62be:\Contacts Contacts   Brenda Smith {PublishingEditor}
5f4d37cd-383c-413f-87a2-aab0dc6a531a:\Contacts Contacts   Brenda Smith {PublishingEditor}
0f38d53f-cbe0-4844-86e9-1032a45ba31b:\Contact… Contactpe… Brenda Smith {PublishingEditor}
411a8f10-0dfa-4034-a1e3-a8b6e4cad2f6:\Contacts Contacts   Brenda Smith {PublishingEditor}
52a6c1c7-77d2-4109-99b9-a4076167b6e2:\Contacts Contacts   Brenda Smith {PublishingEditor}
2dead2c4-7baf-4899-a7d1-dfa73f4d445d:\Contacts Contacts   Brenda Smith {PublishingEditor}

2.为特定文件夹添加文件夹权限

我们将向您展示如何与其他用户共享特定邮箱文件夹或所有邮箱文件夹并为其添加权限。

添加对特定文件夹名称的权限

如果用户邮箱创建了要与其他用户共享的文件夹,您需要指定文件夹名称并分配要启用的访问权限。

在我们的示例中,用户邮箱([email protected])想要在其收件箱中共享特定文件夹名称(地图 A) > 与另一个用户([email protected]) 并添加访问权限。

  1. 第 1 行中指定要共享文件夹的邮箱
  2. 第 2 行中指定您要添加权限的用户
  3. 第 3 行中指定文件夹名称
  4. 运行以下 PowerShell 命令脚本
$mailbox = "[email protected]"
$user = "[email protected]"
$foldername = "Map A"

$folder = (Get-MailboxFolderStatistics -Identity "$($mailbox)" | Where-Object { $_.FolderType -eq "Inbox" }).Name
Add-MailboxFolderPermission "$($mailbox):$($folder)$($foldername)" -User "$($user)" -AccessRights "Reviewer" | Select-Object FolderName, User, AccessRights

PowerShell 输出显示如下。

FolderName User           AccessRights
---------- ----           ------------
Map A      Stephen Hunter {Reviewer}

注意:特定文件夹不会自动显示在用户邮箱中。用户需要手动将其添加到OWAOutlook中。

为所有邮箱文件夹添加权限

您可以与其他用户共享邮箱中的所有文件夹并为其分配权限。

[玩转系统] 使用 PowerShell 管理邮箱文件夹权限

在我们的示例中,我们希望为用户分配对所有用户邮箱文件夹具有审阅者权限的用户([email protected])(Brenda.Smith@ a-d.site)。它将自动遍历每个文件夹并为用户分配您提供的访问权限。

  1. 指定要共享第 1 行中所有文件夹的邮箱
  2. 第 2 行中指定您要添加权限的用户
  3. 第 3 行中指定访问权限
  4. 运行 PowerShell 命令脚本
$mailbox = "[email protected]"
$user = "[email protected]"
$accessRights = "Reviewer"
$folders = Get-MailboxFolderStatistics $mailbox | Where-Object { $_.FolderPath.Contains("/") }

foreach ($folder in $folders) {
    $folderPath = "$($mailbox):" + $folder.FolderPath.Replace("/", "\")
    $existingPermission = Get-MailboxFolderPermission -Identity $folderPath -User $user -ErrorAction SilentlyContinue
    if ($existingPermission) {
        Write-Host "$($user) already has $($accessRights) permission to $($folder.FolderPath)" -ForegroundColor Yellow
    }
    else {
        $null = Add-MailboxFolderPermission -Identity $folderPath -User "$($user)" -AccessRights $accessRights
        Write-Host "Added $($accessRights) permission to $($user) for $($folder.FolderPath)" -ForegroundColor Green
    }
}

PowerShell 输出将以用户邮箱 ([email protected]) 的语言显示用户邮箱中所有文件夹的列表。在我们的示例中,文件夹名称采用荷兰语,因为用户来自荷兰。它将向用户 Stephen Hunter 分配所有文件夹的审阅者权限。

PowerShell 输出显示以下时间:

  • 它添加对用户邮箱文件夹名称的权限
  • 用户已具有分配给邮箱文件夹名称的权限
  • 找不到邮箱文件夹名称
Added Reviewer permission to [email protected] for /Bovenste map van gegevensarchief
[email protected] already has Reviewer permission to /Agenda
[email protected] already has Reviewer permission to /Contactpersonen
Added Reviewer permission to [email protected] for /Postvak IN
Added Reviewer permission to [email protected] for /Postvak IN/Map A
Added Reviewer permission to [email protected] for /Postvak UIT
Added Reviewer permission to [email protected] for /Yammer-hoofdmap
Add-MailboxFolderPermission: Ex43C0AC|Microsoft.Exchange.Configuration.Tasks.ManagementObjectNotFoundException
|The operation couldn't be performed because '[email protected]:\Versions' couldn't be found.
Added Reviewer permission to [email protected] for /Versions

3. 将文件夹权限设置为日历或联系人文件夹

我们将使用 Set-MailboxFolderPermission PowerShell cmdlet 更改分配给邮箱用户的文件夹级别权限。

设置单个用户的日历文件夹默认权限为发布编辑器

默认情况下,用户拥有日历文件夹仅限可用性的访问权限。您可以更改单个用户对特定文件夹的默认访问权限。

在我们的示例中,我们仅将用户 [email protected] 的默认访问权限从仅可用性更改为发布编辑器日历文件夹。这意味着从现在开始,所有用户都将默认拥有对用户 Brenda 的日历文件夹的发布编辑访问权限。

  1. 第 1 行中指定要更改文件夹权限的邮箱
  2. 运行 PowerShell 命令脚本以更改用户默认权限
$mailbox = "[email protected]"

$folder = (Get-MailboxFolderStatistics -Identity "$($mailbox)" | Where-Object { $_.FolderType -eq "Calendar" }).Name
Set-MailboxFolderPermission "$($mailbox):$($folder)" -User "Default" -AccessRights "PublishingEditor"

它将更改用户 [email protected]日历文件夹的发布编辑器的默认访问权限。

将批量用户的日历文件夹默认权限设置为审阅者

您还可以批量更改所有用户对特定文件夹的默认访问权限。默认情况下,所有用户都具有日历文件夹的仅限可用性访问权限。我们想要更改所有用户的默认权限。

在我们的示例中,我们将批量用户对日历文件夹的默认共享权限设置为审阅者

运行以下 PowerShell 脚本。

$mailboxes = Get-Mailbox -Resultsize Unlimited

# Loop through each mailbox
foreach ($mailbox in $mailboxes) {
    # Get calendar folder name for the current mailbox and store it in the variable $folder
    $folder = (Get-MailboxFolderStatistics -Identity $mailbox.PrimarySmtpAddress | Where-Object { $_.FolderType -eq "Calendar" }).Name

    # Add mailbox folder permissions for all calendar folders
    Set-MailboxFolderPermission -Identity "$($mailbox.PrimarySmtpAddress):$($folder)" -User "Default" -Accessrights "Reviewer"
}

它将日历文件夹中的审阅者的访问权限更改为批量处理所有邮箱。您可以随时将其更改回默认的仅限可用性访问权限。

设置单个用户的联系人文件夹默认权限为编辑者

要更改用户特定文件夹的默认权限,我们将使用 Set-MailboxFolderPermission PowerShell cmdlet。

默认情况下,用户对联系人文件夹具有访问权限。您始终可以更改单个用户对特定文件夹的默认访问权限。

在我们的示例中,我们仅将联系人中用户 [email protected] 的默认访问权限从 更改为 编辑文件夹。这意味着从现在开始,所有用户都将默认拥有 Brenda 联系人文件夹的 编辑 访问权限。

  1. 第 1 行中指定要更改文件夹权限的邮箱
  2. 运行 PowerShell 命令脚本
$mailbox = "[email protected]"

$folder = (Get-MailboxFolderStatistics -Identity "$($mailbox)" | Where-Object { $_.FolderType -eq "Contacts" }).Name
Set-MailboxFolderPermission "$($mailbox):$($folder)" -User "Default" -AccessRights "Editor"

它将更改用户 [email protected] 联系人文件夹的默认访问权限编辑

4.获取邮箱文件夹权限

使用 Get-MailboxFolderPermission PowerShell cmdlet 查看并导出单个用户的所有邮箱文件夹权限。

获取单个用户的日历文件夹权限

获取单个用户的邮箱文件夹权限。在我们的示例中,我们想要查看特定用户的日历文件夹名称([email protected])。

  1. 第 1 行中指定邮箱
  2. 运行 PowerShell命令脚本查看单个用户的日历文件夹权限
$mailbox = "[email protected]"

$folder = (Get-MailboxFolderStatistics -Identity "$($mailbox)" | Where-Object { $_.FolderType -eq "Calendar" }).Name
Get-MailboxFolderPermission "$($mailbox):$($folder)" | Select-Object FolderName, User, AccessRights

PowerShell 输出以用户语言显示日历文件夹。

FolderName User           AccessRights
---------- ----           ------------
Agenda     Default        {Reviewer}
Agenda     Anonymous      {None}
Agenda     Brenda Smith   {PublishingEditor}
Agenda     Stephen Hunter {PublishingEditor}
Agenda     Amanda Hansen  {PublishingEditor}

获取所有用户的日历文件夹权限

获取组织中批量所有用户的所有日历文件夹权限。

运行以下 PowerShell 脚本。

$mailboxes = Get-Mailbox -ResultSize Unlimited

# Loop through each mailbox
foreach ($mailbox in $mailboxes) {
    # Get calendar folder name for the current mailbox and store it in the variable $calendarFolder
    $folder = (Get-MailboxFolderStatistics -Identity $mailbox.PrimarySmtpAddress | Where-Object { $_.FolderType -eq "Calendar" }).Name

    # Get mailbox folder permissions for the calendar folder
    Get-MailboxFolderPermission "$($mailbox.PrimarySmtpAddress):$($folder)" -User Default | Select-Object Identity, FolderName, User, AccessRights
}

PowerShell 输出以相应语言显示所有许可邮箱的日历文件夹名称。

Identity                                       FolderName User    AccessRights
--------                                       ---------- ----    ------------
0de964ae-f09a-4e65-bc8c-cbeac2745e4c:\Calendar Calendar   Default {AvailabilityOnly}
41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5:\Calendar Calendar   Default {Editor}
f8261d51-3df9-4f21-a6b1-533412669c11:\Calendar Calendar   Default {AvailabilityOnly}
7bfec79d-7806-484a-ac83-133cd4cf5af5:\Calendar Calendar   Default {AvailabilityOnly}
82cd0d62-e974-4892-aca6-e0387abc62be:\Calendar Calendar   Default {AvailabilityOnly}
5f4d37cd-383c-413f-87a2-aab0dc6a531a:\Calendar Calendar   Default {AvailabilityOnly}
0f38d53f-cbe0-4844-86e9-1032a45ba31b:\Agenda   Agenda     Default {AvailabilityOnly}
411a8f10-0dfa-4034-a1e3-a8b6e4cad2f6:\Calendar Calendar   Default {AvailabilityOnly}
52a6c1c7-77d2-4109-99b9-a4076167b6e2:\Calendar Calendar   Default {AvailabilityOnly}
2dead2c4-7baf-4899-a7d1-dfa73f4d445d:\Calendar Calendar   Default {Reviewer}

获取联系人文件夹权限

获取单个用户的邮箱文件夹权限。在我们的示例中,我们想要导出特定用户 ([email protected]) 的 contacts 文件夹权限。

  1. 第 1 行中指定邮箱
  2. 运行 PowerShell命令脚本查看单个用户的联系人文件夹权限
$mailbox = "[email protected]"

$folder = (Get-MailboxFolderStatistics -Identity "$($mailbox)" | Where-Object { $_.FolderType -eq "Contacts" }).Name
Get-MailboxFolderPermission "$($mailbox):$($folder)" | Select-Object FolderName, User, AccessRights

PowerShell 输出以用户语言显示联系人文件夹。

FolderName      User           AccessRights
----------      ----           ------------
Contactpersonen Default        {Editor}
Contactpersonen Anonymous      {None}
Contactpersonen Stephen Hunter {PublishingEditor}

5.使用PowerShell脚本将邮箱文件夹权限导出到CSV文件

您可以使用 PowerShell 脚本将所有用户的邮箱文件夹权限导出到 CSV 文件。我们还将向您展示如何将单个用户的邮箱文件夹权限导出到 CSV 文件。

下载 Get-FolderPermission.ps1 PowerShell 脚本

要将所有批量用户的邮箱文件夹权限导出到 CSV 文件,请执行以下步骤:

  1. 下载 Get-FolderPermissions.ps1 PowerShell 脚本
  2. 将以下 PowerShell 脚本复制到记事本中并将其另存为 Get-FolderPermissions.ps1 文件
param (
    [string]$Identity = "*", # Default value is "*" (all users)
    [string]$OutputFile = "C:\temp\MailboxPermissions.csv"
)

# Fetch mailboxes of type UserMailbox only
$Mailboxes = Get-Mailbox -RecipientTypeDetails 'UserMailbox' $Identity -ResultSize Unlimited | Sort-Object

$result = @()

# Counter for progress bar
$MailboxCount = ($Mailboxes | Measure-Object).Count
$count = 1

foreach ($Mailbox in $Mailboxes) {

    # Use Alias property instead of name to ensure 'uniqueness' passed on to Get-MailboxFolderStatistics
    $Alias = '' + $Mailbox.Alias

    $DisplayName = ('{0} ({1})' -f $Mailbox.DisplayName, $Mailbox.Name)

    $activity = ('Working... [{0}/{1}]' -f $count, $MailboxCount)
    $status = ('Getting folders for mailbox: {0}' -f $DisplayName)
    Write-Progress -Status $status -Activity $activity -PercentComplete (($count / $MailboxCount) * 100)

    # Fetch folders
    $Folders = @('\')
    $FolderStats = Get-MailboxFolderStatistics $Alias | Select-Object -Skip 1
    foreach ($FolderStat in $FolderStats) {
        $FolderPath = $FolderStat.FolderPath.Replace('/', '\')
        $Folders += $FolderPath
    }

    foreach ($Folder in $Folders) {

        # Build folder key to fetch mailbox folder permissions
        $FolderKey = $Alias + ':' + $Folder

        # Fetch mailbox folder permissions
        $Permissions = Get-MailboxFolderPermission -Identity $FolderKey -ErrorAction SilentlyContinue

        # Store results in variable
        foreach ($Permission in $Permissions) {
            $User = $Permission.User -replace "ExchangePublishedUser\.", ""
            if ($User -notlike 'Default' -and
                $User -notlike 'Anonymous' -and
                $Permission.AccessRights -notlike 'None' -and
                $Permission.AccessRights -notlike 'Owner') {
                $result += [PSCustomObject]@{
                    Mailbox      = $DisplayName
                    FolderName   = $Permission.FolderName
                    Identity     = $Folder
                    User         = $User -join ','
                    AccessRights = $Permission.AccessRights -join ','
                }
            }
        }
    }

    # Increment counter
    $count++
}

# Export to CSV
$result | Export-Csv -Path $OutputFile -NoTypeInformation -Encoding UTF8 #-Delimiter ';'
  1. 如果您还没有 (C:) 驱动器中的 scriptstemp 文件夹,请创建它们
  2. 将 Get-FolderPermissions.ps1 PowerShell 脚本保存在 C:\scripts 文件夹中
  3. 打开文件检查是否解锁,防止运行脚本时出错

[玩转系统] 使用 PowerShell 管理邮箱文件夹权限

将所有用户批量导出到 CSV 的邮箱文件夹权限

要将所有用户邮箱文件夹权限导出到 CSV 文件,请按照下列步骤操作:

  1. 以管理员身份运行 PowerShell
  2. 指定输出文件
  3. 运行 Get-FolderPermissions.ps1 PowerShell 脚本
C:\scripts\.\Get-FolderPermissions.ps1 -OutputFile "C:\temp\BulkUsers.csv"
  1. 您将在 C:\temp 文件夹中找到 BulkUsers.csv 文件
  2. 使用 Microsoft Excel 打开 CSV 文件以查看结果

[玩转系统] 使用 PowerShell 管理邮箱文件夹权限

将单个用户的邮箱文件夹权限导出到 CSV

要导出特定用户的邮箱文件夹权限,请按照下列步骤操作:

  1. 指定用户身份
  2. 指定输出文件
  3. 为单个用户运行 Get-FolderPermissions.ps1 PowerShell 脚本
C:\scripts\.\Get-FolderPermissions.ps1 -Identity "[email protected]" -OutputFile "C:\temp\SingleUser.csv"
  1. 您将在 C:\temp 文件夹中找到 SingleUser.csv 文件

[玩转系统] 使用 PowerShell 管理邮箱文件夹权限

  1. 使用 Microsoft Excel 打开 CSV 文件以查看结果

CSV 文件将显示邮箱 ([email protected]) 拥有的所有文件夹权限的列表。

[玩转系统] 使用 PowerShell 管理邮箱文件夹权限

6.删除邮箱文件夹权限

要删除分配给用户的邮箱文件夹权限,我们将使用Remove-MailboxFolderPermission PowerShell cmdlet。您可以删除分配给单个或批量所有用户的所有邮箱文件夹权限。您需要指定的只是文件夹名称以及与之共享该文件夹的用户

删除特定用户的日历文件夹权限

在我们的示例中,用户 [email protected] 拥有发布者编辑者权限,可以访问 [email protected]calendar 文件夹>,我们想删除这些权限。

我们还将添加 -Confirm:$false 来抑制确认提示。

  1. 第 1 行中指定邮箱
  2. 第 2 行中指定要删除权限的用户
  3. 运行 PowerShell 命令脚本以删除单个用户对日历文件夹的权限
$mailbox = "[email protected]"
$user = "[email protected]"

$folder = (Get-MailboxFolderStatistics -Identity "$($mailbox)" | Where-Object { $_.FolderType -eq "Calendar" }).Name
Remove-MailboxFolderPermission "$($mailbox):$($folder)" -User "$($user)" -Confirm:$false

它将删除共享日历文件夹的发布编辑权限。

删除特定用户的联系人文件夹权限

在我们的示例中,用户 [email protected] 拥有 Publisher Editor 权限,可以访问 Brenda.Smith 的 contacts 文件夹@a-d.site,我们想要删除这些权限。

我们还将添加 -Confirm:$false 以删除确认提示。

  1. 第 1 行中指定邮箱
  2. 第 2 行中指定要删除权限的用户
  3. 运行 PowerShell 命令脚本以删除单个用户对联系人文件夹的权限
$mailbox = "[email protected]"
$user = "[email protected]"

$folder = (Get-MailboxFolderStatistics -Identity "$($mailbox)" | Where-Object { $_.FolderType -eq "Contacts" }).Name
Remove-MailboxFolderPermission "$($mailbox):$($folder)" -User "$($user)" -Confirm:$false

它将删除联系人文件夹的发布编辑权限。

从批量所有用户中删除日历文件夹权限

如果您已将特定用户邮箱文件夹权限分配给多个用户,则可以将其全部删除。

在我们的示例中,我们为用户 [email protected] 分配了对所有用户的日历文件夹的发布编辑权限。我们希望使用 PowerShell 脚本从所有用户邮箱中删除这些权限。

  1. 第 1 行上指定用户邮箱
  2. 运行以下 PowerShell 脚本
$user = "[email protected]"
$mailboxes = Get-Mailbox -Resultsize Unlimited

# Loop through each mailbox
foreach ($mailbox in $mailboxes) {
    # Get calendar folder name for the current mailbox and store it in the variable $folder
    $folder = (Get-MailboxFolderStatistics -Identity $mailbox.PrimarySmtpAddress | Where-Object { $_.FolderType -eq "Calendar" }).Name

    # Add mailbox folder permissions for all calendar folders
    Remove-MailboxFolderPermission -Identity "$($mailbox.PrimarySmtpAddress):$($folder)" -User $user -Confirm:$false
}

它将删除日历文件夹的发布编辑器权限。

从批量所有用户中删除“联系人”文件夹权限

如果您已将特定用户邮箱文件夹权限分配给多个用户,则可以将其全部删除。

在我们的示例中,我们为用户 [email protected] 分配了对所有用户的联系人文件夹的发布编辑权限。我们希望使用 PowerShell 脚本从所有用户邮箱中删除这些权限。

  1. 第 1 行中指定用户邮箱
  2. 运行以下 PowerShell 脚本
$user = "[email protected]"
$mailboxes = Get-Mailbox -Resultsize Unlimited

# Loop through each mailbox
foreach ($mailbox in $mailboxes) {
    # Get folder name for the current mailbox and store it in the variable $folder
    $folder = (Get-MailboxFolderStatistics -Identity $mailbox.PrimarySmtpAddress | Where-Object { $_.FolderType -eq "Contacts" }).Name

    # Add mailbox folder permissions for all contacts folders
    Remove-MailboxFolderPermission -Identity "$($mailbox.PrimarySmtpAddress):$($folder)" -User $user -Confirm:$false
}

它将删除联系人文件夹的发布编辑者权限。

删除单个用户所有邮箱文件夹权限

假设您不记得与其他用户共享的文件夹名称,但想要删除某个用户的这些权限。使用下面的 PowerShell 脚本,您可以删除所有邮箱文件夹权限。

在我们的示例中,我们为用户 ([email protected]) 分配了与用户 ([email protected]) 不同的邮箱文件夹权限。现在我们要删除([email protected])([email protected])文件夹的所有文件夹级权限。

  1. 第 1 行中指定共享文件夹的邮箱
  2. 第 2 行中指定具有文件夹权限的用户
  3. 运行以下 PowerShell 脚本
$mailbox = "[email protected]"
$user = "[email protected]"
$folders = Get-MailboxFolderStatistics $mailbox | Where-Object { $_.FolderPath.Contains("/") }

foreach ($folder in $folders) {
    $folderPath = "$($mailbox):" + $folder.FolderPath.Replace("/", "\")
    $existingPermission = Get-MailboxFolderPermission -Identity $folderPath -User $user -ErrorAction SilentlyContinue
    if ($existingPermission) {
        Remove-MailboxFolderPermission -Identity $folderPath -User $user -Confirm:$false
        Write-Host "Permission removed for $($user) from $($folder.FolderPath)" -ForegroundColor Green
    }
    else {
        Write-Host "No permission found for $($user) on $($folder.FolderPath)" -ForegroundColor Yellow
    }
}

输出结果显示何时:

  • 用户邮箱文件夹名称的权限被删除
  • 没有找到该用户的现有权限
No permission found for [email protected] on /Archief
No permission found for [email protected] on /Contactpersonen
No permission found for [email protected] on /Files
Permission removed for [email protected] from /Postvak IN
Permission removed for [email protected] from /Postvak IN/Map A
Permission removed for [email protected] from /Postvak UIT
No permission found for [email protected] on /Audits
No permission found for [email protected] on /Versions

这是否有助于您使用 PowerShell 管理文件夹权限?

阅读更多:如何分配完全访问邮箱权限 »

结论

您了解了如何使用 Exchange Online PowerShell 管理邮箱文件夹权限。 PowerShell cmdlet 添加设置获取删除邮箱文件夹权限非常适合单个或批量使用全部用户。请记住使用 PowerShell 脚本导出分配给单个或所有用户的所有邮箱文件夹权限以获取审核报告。

您喜欢这篇文章吗?您可能还喜欢使用 PowerShell 管理邮箱时区和语言设置。不要忘记关注我们并分享这篇文章。

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

取消回复欢迎 发表评论:

关灯