How to Restrict Personal Booking Page Creation for Specific Users in Exchange using PowerShell

Personal booking pages are increasingly popular for simplifying scheduling, but organizations often require fine-grained control over who has the ability to create them. This article provides a step-by-step guide on how to restrict personal booking page access to only designated users within your Exchange environment using PowerShell commands.

Understanding Exchange Configuration Precedence:

It's essential to grasp the hierarchy of configurations in Exchange. Settings applied globally using Set-OrganizationConfig serve as defaults. However, settings configured at the individual user level with Set-CASMailbox will always override these global settings for that specific user. This allows administrators to make exceptions and tailor features for individual mailboxes without altering the organization's default configuration.

Targeted Enabling of Personal Booking Pages:

To achieve the goal of allowing only selected users to create personal booking pages, we will exclusively use the Set-CASMailbox cmdlet. This approach ensures precise control over user access without the need to modify or potentially disrupt your global Exchange settings.

Key Parameters for Control:

The control over personal booking page access is managed through specific parameters within the Set-CASMailbox cmdlet related to Exchange Web Services (EWS) and REST access:

  • EwsEnabled: This parameter dictates whether a mailbox can be accessed using Exchange Web Services. Setting it to $true enables all EWS access, $false disables it entirely, and $null means the setting is not explicitly configured at the user level, and the global setting will apply.
  • EwsApplicationAccessPolicy: This parameter defines the policy for which client applications are permitted to access EWS and REST APIs. EnforceAllowList means only applications explicitly listed in the EwsAllowList are permitted. EnforceBlockList means all applications are allowed except those explicitly listed in the EwsBlockList. $null indicates no specific application access policy is configured for the user.
  • EwsAllowList: When EwsEnabled is $true and EwsApplicationAccessPolicy is EnforceAllowList, this parameter is used to specify the list of applications that are allowed to access the mailbox.
  • EwsBlockList: When EwsEnabled is $true and EwsApplicationAccessPolicy is EnforceBlockList, this parameter is used to specify the list of applications that are not allowed to access the mailbox.

Implementing the Configuration with PowerShell:

Here is the PowerShell script to implement the desired configuration, allowing only a defined list of users to create personal booking pages:

# Define the list of users who should be allowed to create booking pages
$allowedUsers = @("user1@example.com", "user2@example.com", "user3@example.com")

# Get all user mailboxes (excluding shared, etc.)
$allUsers = Get-Mailbox -RecipientTypeDetails UserMailbox | Select-Object -ExpandProperty PrimarySmtpAddress

foreach ($user in $allUsers) {
    # Ensure EWS is enabled and clear any existing policy for all users initially
    Set-CASMailbox -Identity $user -EwsEnabled $true -EwsApplicationAccessPolicy $null

    if ($allowedUsers -contains $user) {
        # Add the booking page application to the allow list for allowed users
        Set-CASMailbox -Identity $user -EwsAllowList @{Add = "MicrosoftOWSPersonalBookings"}
        # Ensure it's not in the block list (in case of previous configurations)
        Set-CASMailbox -Identity $user -EwsBlockList @{Remove = "MicrosoftOWSPersonalBookings"}
    } else {
        # Add the booking page application to the block list for other users
        Set-CASMailbox -Identity $user -EwsBlockList @{Add = "MicrosoftOWSPersonalBookings"}
        # Ensure it's not in the allow list (in case of previous configurations)
         Set-CASMailbox -Identity $user -EwsAllowList @{Remove = "MicrosoftOWSPersonalBookings"}
    }
}

Explanation of the PowerShell Script:

  1. Defining Allowed Users: The script begins by creating an array, $allowedUsers, which holds the email addresses of the individuals who should have the ability to create personal booking pages.
  2. Retrieving All Users: It then fetches the primary SMTP addresses of all mailboxes categorized as UserMailbox. This ensures the script processes all standard user accounts.
  3. Initial EWS Configuration Loop: The first loop iterates through every retrieved user. Inside this loop, Set-CASMailbox is used to ensure that EwsEnabled is set to $true (as booking pages rely on EWS) and that any existing EwsApplicationAccessPolicy at the user level is cleared ($null). This provides a clean slate for applying our specific allow/block rules for the booking page application.
  4. Conditional Allow/Block List Configuration Loop: The second loop is where the core logic resides. For each user, it checks if their email address is present in the $allowedUsers array.
    • If the user is in the allowed list: The script uses Set-CASMailbox -EwsAllowList @{Add = "MicrosoftOWSPersonalBookings"} to add the specific application identifier for personal bookings ("MicrosoftOWSPersonalBookings") to that user's EWS allow list. It also explicitly removes it from the block list to avoid conflicts.
    • If the user is NOT in the allowed list: The script uses Set-CASMailbox -EwsBlockList @{Add = "MicrosoftOWSPersonalBookings"} to add the personal bookings application identifier to that user's EWS block list, preventing them from using the feature. It also explicitly removes it from the allow list.

Conclusion:

By following these steps and utilizing the provided PowerShell script, Exchange administrators can effectively restrict the creation of personal booking pages to a specified group of users. This granular control enhances organizational security and ensures that powerful scheduling tools are available to the individuals who need them most, contributing to a more organized and productive environment. 

Comments

Popular posts from this blog

Unveiling Primary Mailbox Statistics

Manage DL Members in OWA Without Allowing DL Creation – A Practical Solution

PowerShell Basics for Office 365 Administration (Episode 3)