PowerShell ile tüm kullanıcılar için varsayılan takvim izinlerini ayarlayın


Exchange Online'daki varsayılan takvim paylaşım izinleri Yalnızca Kullanılabilirlik olarak ayarlanmıştır. Peki ya bunu değiştirmek istersen? Kullanıcıların varsayılan takvim izinlerini tek tek değiştirmek mümkündür ancak bu zaman alacaktır. Başka bir yol da PowerShell betiğiyle tüm kullanıcılar için varsayılan takvim izinlerini ayarlamaktır. Nasıl olduğunu öğrenelim.

Varsayılan takvim izinleri

Pek çok şirket, varsayılan takvimin varsayılan AvaiblityOnly yerine LimitedDetails olarak ayarlanmasını istiyor. Bunun nedeni, iş arkadaşlarınızın takvim öğesinde daha fazla bilgi göreceksiniz.

Yalnızca Kullanılabilirlik izniyle nasıl görünür:

LimitedDetails izniyle nasıl görünecek:

Bir önceki yazımızda Office 365’te takvim izinlerinin PowerShell ile nasıl yönetileceğine bakmıştık. Lütfen okuyun ve komutlara alışın.

Tüm kullanıcıların takvimleri için varsayılanı ayarlamak isterseniz ne olur? Set-MailboxFolderPermission komutunu tüm kullanıcılar için tek tek çalıştıracak mısınız? Bu biraz zaman alacak ve belki bir kullanıcıyı unutacaksınız. İşi yapacak PowerShell betiği ile ilgili bir sonraki adıma bakalım.

Varsayılan takvim izinlerini ayarlama PowerShell betiğini hazırlayın

(C:) sürücüsünde iki klasör oluşturun:

  • Sıcaklık

  • Kodlar

Set-DefCalPermissions.ps1 komut dosyasını indirin ve C:\scripts klasörüne yerleştirin. Komut dosyası, transkript günlüklerini C:\temp klasörüne yerleştirecektir.

Komut dosyasını çalıştırırken hataları önlemek için dosyanın engellemesinin kaldırıldığından emin olun. PowerShell betiğini çalıştırırken dijital olarak imzalanmamış hata makalesinde daha fazlasını okuyun.

Diğer bir seçenek de aşağıdaki kodu kopyalayıp Not Defteri'ne yapıştırmaktır. Ona Set-DefCalPermissions.ps1 adını verin ve C:\scripts klasörüne yerleştirin.

<#
    .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
    alitajran.com/set-default-calendar-permissions-for-all-users-powershell

    .NOTES
    Written by: ALI TAJRAN
    Website:    alitajran.com
    LinkedIn:   linkedin.com/in/alitajran

    .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 = @("irene.springer@exoip.com", "richard.grant@exoip.com")

# 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 betiğinde, kuruluşunuzun bazı gereksinimlerini karşılamanıza yardımcı olacak bazı eklemeler olacaktır:

  • Komut dosyasının çalışmasını istemediğiniz kullanıcıları hariç tutun. Bunları 35. satıra ekleyin. Bu özelliğe ihtiyacınız yoksa 35, 50, 51, 52, 53 ve 77 satırlarına yorum yapın.

  • Takvimler her zaman İngilizce dilinde ayarlanmaz. Örneğin Hollanda'da buna Gündem adı verilir. Komut dosyası, satır 41'de tanımlanan takvim adlarını kontrol edecektir.

  • 38. satırda tüm kullanıcılar için ayarlamak istediğiniz izni değiştirin.

Bir sonraki adımda betiği çalıştıracak ve çalışırken göreceksiniz.

Varsayılan takvim izinlerini toplu olarak ayarlama PowerShell betiği

Betiği çalıştırmadan önce uygun araçlara bağlanmalısınız:

  • Şirket içi Exchange: Exchange Management Shell'i yönetici olarak çalıştırın.

  • Exchange Online (Microsoft 365/Office 365): PowerShell'i yönetici olarak çalıştırın ve Exchange Online PowerShell'e bağlanın.

Dizini betik yolu olarak değiştirin ve Set-DefCalPermissions.ps1 PowerShell betiğini çalıştırın.

Komut dosyası, Exchange Server/Exchange Online'daki tüm posta kutularından geçecektir.

Not: -WhatIf parametresi komut dosyasına satır 65'te eklenir. Komut dosyasını çalıştırırsanız ortamda hiçbir şey olmayacaktır. Bunun yerine ne olacağını gösteren bir çıktı alırsınız.

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

-WhatIf parametresini PowerShell betiğinden kaldırın ve tüm kullanıcılar için varsayılan takvim paylaşım izinlerini ayarlamak üzere betiği yeniden çalıştırın.

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

Varsayılan takvim izinlerini doğrulayın

Çıktı Windows PowerShell konsolunda gösterilecektir. Sadece bu da değil, PS betiğine bir transkript eklendiğinden çıktıyı bir günlükte gösterecektir.

C:\temp klasörüne gidin ve Set-DefCalPermissions.log dosyasını açın.

Umarım bu, Exchange Online'da ve şirket içi Exchange Server'da varsayılan takvim izinlerini değiştirmenize yardımcı olmuştur.

Okumaya devam edin: Azure grup tabanlı lisanslamayla Office 365 lisanslarını atama »

Çözüm

Set-DefCalPermissions.ps1 PowerShell betiğiyle tüm kullanıcılar için varsayılan takvim izinlerini nasıl ayarlayacağınızı öğrendiniz. Birçok kullanıcının varsayılan takvim izinlerini değiştirmeniz gerektiğinde işlemi otomatikleştirin. Bu zaman kazandıracak ve değişikliklerin olduğu transkript günlüklerini her zaman kontrol edebilirsiniz.

Bu makaleyi beğendiniz mi? Ayrıca Microsoft 365'te harici iletme nasıl etkinleştirilir konusunu da beğenebilirsiniz. Bizi takip etmeyi ve bu makaleyi paylaşmayı unutmayın.

İlgili makaleler