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

[玩转系统] 使用 PowerShell 为所有用户设置默认日历权限

作者:精品下载站 日期:2024-12-14 22:33:25 浏览:17 分类:玩电脑

使用 PowerShell 为所有用户设置默认日历权限


Exchange Online 中的默认日历共享权限设置为 AvailabilityOnly。如果你想改变这一点怎么办?可以一一更改用户的默认日历权限,但这需要时间。另一种方法是使用 PowerShell 脚本为所有用户设置默认日历权限。让我们看看如何。

默认日历权限

许多公司希望将默认日历设置为 LimitedDetails,而不是默认的 AvailabilityOnly。这是因为您会在同事的日历项目中看到更多信息。

获得AvailabilityOnly许可后的外观:

[玩转系统] 使用 PowerShell 为所有用户设置默认日历权限

获得LimitedDetails许可后的外观:

[玩转系统] 使用 PowerShell 为所有用户设置默认日历权限

在上一篇文章中,我们了解了如何使用 PowerShell 管理 Office 365 中的日历权限。请阅读并熟悉这些命令。

如果您想为所有用户的日历设置默认值怎么办?您将为所有用户一一运行 Set-MailboxFolderPermission 命令吗?这将需要一些时间,也许您会忘记一个用户。让我们看看下一步如何执行该工作的 PowerShell 脚本。

准备设置默认日历权限 PowerShell 脚本

(C:)驱动器上创建两个文件夹:

  • 温度

  • 脚本

下载 Set-DefCalPermissions.ps1 脚本并将其放置在 C:\scripts 文件夹中。该脚本会将记录日志放置在 C:\temp 文件夹中。

确保文件未被阻止,以防止运行脚本时出现错误。请阅读文章运行 PowerShell 脚本时出现未数字签名错误来了解更多信息。

另一种选择是将以下代码复制并粘贴到记事本中。将其命名为 Set-DefCalPermissions.ps1 并将其放置在 C:\scripts 文件夹中。

<#
    .SYNOPSIS
    Set-DefCalPermissions.ps1

    .DESCRIPTION
    Set default calendar permissions for all user mailboxes including exception for users.

    The script works for:
    -Exchange On-Premises (Run Exchange Management Shell)
    -Exchange Online (Connect to Exchange Online PowerShell)

    .LINK
    a-d.site/set-default-calendar-permissions-for-all-users-powershell

    .NOTES
    Written by: ALI TAJRAN
    Website:    a-d.site
    LinkedIn:   linkedin.com/in/a-d

    .CHANGELOG
    V1.00, 02/28/2021 - Initial version
    V1.10, 03/29/2023 - Changed Exceptions to look for UserPrincipalName
#>

# Start transcript
Start-Transcript -Path "C:\temp\Set-DefCalPermissions.log" -Append

# Set scope to entire forest. Cmdlet only available for Exchange on-premises.
#Set-ADServerSettings -ViewEntireForest $true

# Get all user mailboxes
$Users = Get-Mailbox -ResultSize Unlimited -RecipientTypeDetails UserMailbox

# Users exception (add the UserPrincipalName)
$Exception = @("[email protected]", "[email protected]")

# Permissions
$Permission = "LimitedDetails"

# Calendar name languages
$FolderCalendars = @("Agenda", "Calendar", "Calendrier", "Kalender", "日历")

# Loop through each user
foreach ($User in $Users) {

    # Get calendar in every user mailbox
    $Calendars = (Get-MailboxFolderStatistics $User.UserPrincipalName -FolderScope Calendar)

    # Leave permissions if user is exception
    if ($Exception -Contains ($User.UserPrincipalName)) {
        Write-Host "$User is an exception, don't touch permissions" -ForegroundColor Red
    }
    else {

        # Loop through each user calendar
        foreach ($Calendar in $Calendars) {
            $CalendarName = $Calendar.Name

            # Check if calendar exist
            if ($FolderCalendars -Contains $CalendarName) {
                $Cal = "$($User.UserPrincipalName):$CalendarName"
                $CurrentMailFolderPermission = Get-MailboxFolderPermission -Identity $Cal -User Default
                
                # Set calendar permission / Remove -WhatIf parameter after testing
                Set-MailboxFolderPermission -Identity $Cal -User Default -AccessRights $Permission -WarningAction:SilentlyContinue -WhatIf
                
                # Write output
                if ($CurrentMailFolderPermission.AccessRights -eq "$Permission") {
                    Write-Host $User.DisplayName already has the permission $CurrentMailFolderPermission.AccessRights -ForegroundColor Yellow
                }
                else {
                    Write-Host $User.DisplayName added permissions $Permission -ForegroundColor Green
                }
            }
        }
    }
}

Stop-Transcript

PowerShell 脚本将添加一些内容,帮助您满足组织的一些要求:

  • 排除您不希望脚本运行的用户。将它们添加到第 35 行中。如果您不需要此功能,请注释掉第 35、50、51、52、5377 行。

  • 日历并不总是以英语设置。例如,在荷兰,它被命名为议程。该脚本将检查第 41 行中定义的日历名称。

  • 第 38 行中更改您要为所有用户设置的权限。

在下一步中,您将运行该脚本并查看其实际效果。

批量设置默认日历权限 PowerShell 脚本

在运行脚本之前,您必须连接正确的工具:

  • 本地 Exchange: 以管理员身份运行 Exchange 命令行管理程序。

  • Exchange Online (Microsoft 365/Office 365):以管理员身份运行 PowerShell 并连接到 Exchange Online PowerShell。

将目录更改为脚本路径并运行 Set-DefCalPermissions.ps1 PowerShell 脚本。

该脚本将遍历 Exchange Server/Exchange Online 中的所有邮箱。

注意: -WhatIf 参数添加到脚本的第 65 行 中。如果运行该脚本,环境中不会发生任何事情。相反,您会得到一个显示将发生什么的输出。

PS C:\> cd c:\scripts
PS C:\scripts>.\Set-DefCalPermissions.ps1
Transcript started, output file is C:\temp\Set-DefCalPermissions.log
What if: Setting mailbox folder permission "'LimitedDetails'" on "Zoë Roberts:\Calendar" for user "Default".
Zoë Roberts added permissions LimitedDetails
What if: Setting mailbox folder permission "'LimitedDetails'" on "Madeleine Fisher:\Agenda" for user "Default".
Madeleine Fisher added permissions LimitedDetails
Irene Springer is an exception, don't touch permissions
What if: Setting mailbox folder permission "'LimitedDetails'" on "Grace Rees:\Calendar" for user "Default".
Grace Rees added permissions LimitedDetails
What if: Setting mailbox folder permission "'LimitedDetails'" on "Kylie Davidson:\Calendar" for user "Default".
Kylie Davidson added permissions LimitedDetails
Richard Grant is an exception, don't touch permissions
What if: Setting mailbox folder permission "'LimitedDetails'" on "Dylan Piper:\Calendar" for user "Default".
Dylan Piper added permissions LimitedDetails
Transcript stopped, output file is C:\temp\Set-DefCalPermissions.log

从 PowerShell 脚本中删除 -WhatIf 参数,然后重新运行该脚本以设置所有用户的默认日历共享权限。

PS C:\scripts>.\Set-DefCalPermissions.ps1
Transcript started, output file is C:\temp\Set-DefCalPermissions.log
Zoë Roberts added permissions LimitedDetails
Madeleine Fisher added permissions LimitedDetails
Irene Springer is an exception, don't touch permissions
Grace Rees added permissions LimitedDetails
Kylie Davidson added permissions LimitedDetails
Richard Grant is an exception, don't touch permissions
Dylan Piper added permissions LimitedDetails
Transcript stopped, output file is C:\temp\Set-DefCalPermissions.log

验证默认日历权限

输出将显示在 Windows PowerShell 控制台中。不仅如此,它还会在日志中显示输出,因为 PS 脚本中添加了脚本。

转到 C:\temp 文件夹并打开 Set-DefCalPermissions.log 文件。

[玩转系统] 使用 PowerShell 为所有用户设置默认日历权限

我希望这可以帮助您更改 Exchange Online 和本地 Exchange Server 中的默认日历权限。

继续阅读:使用基于 Azure 组的许可分配 Office 365 许可证 »

结论

您了解了如何使用 Set-DefCalPermissions.ps1 PowerShell 脚本为所有用户设置默认日历权限。当您需要更改许多用户的默认日历权限时,请自动化该过程。这将节省时间,并且您可以随时检查记录日志中的更改。

您喜欢这篇文章吗?您可能还喜欢如何在 Microsoft 365 中启用外部转发。不要忘记关注我们并分享这篇文章。

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

取消回复欢迎 发表评论:

关灯