Створення папки для всіх поштових скриньок в Exchange Online

Організація вирішила, що всі поштові скриньки повинні мати певну папку в Outlook. Якщо вони попросять користувачів зробити це, у більшості випадків це піде не так, оскільки вони створять її як вкладену папку або з неправильною назвою. Щоб забезпечити послідовність і точність, найкращим підходом є автоматизація цього завдання за допомогою PowerShell. У цій статті ви дізнаєтеся, як створити папку для всіх поштових скриньок в Exchange Online (Microsoft 365).

Встановіть Microsoft Graph PowerShell

Перш ніж ми зможемо продовжити та додати папку до всіх поштових скриньок в Exchange Online (Microsoft 365), нам потрібно встановити Microsoft Graph PowerShell.

Запустіть Windows PowerShell як адміністратор і виконайте наведену нижче команду.

Install-Module Microsoft.Graph -Force

Важливо:Завжди оновлюйте до останньої версії модуля Microsoft Graph PowerShell, перш ніж запускати командлет або сценарій, щоб запобігти помилкам і невірним результатам.

Тепер, коли у нас встановлено модуль Microsoft Graph PowerShell SDK, ми можемо переходити до наступного кроку.

Підключіться до Microsoft Graph PowerShell

Щоб мати можливість запустити сценарій PowerShell, спочатку потрібно створити реєстрацію програми з правильними дозволами та секретом клієнта для автентифікації за допомогою Microsoft Graph PowerShell.

Дозволи програми:

  • Mail.ReadWrite
  • User.Read.All

Детальніше про це читайте в статті Як підключитися до Microsoft Graph PowerShell.

Більше читання:Як налаштувати вхідний SMTP DANE за допомогою DNSSEC в Exchange Online

Створіть папку для всіх поштових скриньок в Exchange Online за допомогою PowerShell

Щоб створити папку для всіх поштових скриньок в Exchange Online (Microsoft 365) за допомогою PowerShell, виконайте наведені нижче дії.

Крок 1. Завантажте сценарій PowerShell Add-MailboxFolder

Завантажте та розмістіть сценарій PowerShell Add-MailboxFolder.ps1 у папціC: сценаріїпапку.

Переконайтеся, що файл розблоковано, щоб запобігти помилкам під час виконання сценарію. Докладніше в статті Помилка без цифрового підпису під час запуску сценарію PowerShell.

Інший варіант – скопіювати та вставити наведений нижче код у блокнот. Дайте йому назвуAdd-MailboxFolder.ps1і помістіть його вC: сценаріїпапку.

Переконайтеся, що ви змінюєте значення параметрів у рядках27,28, і29.

<#
    .SYNOPSIS
    Add-MailboxFolder.ps1

    .DESCRIPTION
    This script will add a folder for all mailboxes in Exchange Online (Microsoft 365).

    .LINK
    www.alitajran.com/create-folder-for-all-mailboxes-in-exchange-online/

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

    .CHANGELOG
    V1.00, 01/26/2025 - Initial version
#>

param (
    [Parameter(Mandatory=$true)]
    [string]$FolderName
)

# Configuration
$ClientId = "1cdc5f74-621b-4160-b80c-8243945bdc91"
$TenantId = "eb403171-a42c-4d98-a18f-1876518c9deb"
$ClientSecret = "mFs8Q~wD25t5YQaMV0VuQBzG~KMLYP1ob3g43dpr"

# Convert the client secret to a secure string
$ClientSecretPass = ConvertTo-SecureString -String $ClientSecret -AsPlainText -Force

# Create a credential object using the client ID and secure string
$ClientSecretCredential = New-Object -TypeName System.Management.Automation.PSCredential -ArgumentList $ClientId, $ClientSecretPass

# Connect to Microsoft Graph with Client Secret
Connect-MgGraph -TenantId $TenantId -ClientSecretCredential $ClientSecretCredential -NoWelcome

# Retrieve all users in the tenant
$Users = Get-MgUser -All -Filter "assignedLicenses/`$count ne 0 and userType eq 'Member'" -ConsistencyLevel eventual -CountVariable Records | Select-Object Id, UserPrincipalName

# Loop through each user to add a folder
foreach ($user in $Users) {
    try {
        Write-Host "Processing user: $($user.UserPrincipalName)" -ForegroundColor Cyan

        # Check if folder already exists
        try {
            $ExistingFolder = Get-MgUserMailFolder -UserId $user.Id -Filter "DisplayName eq '$FolderName'" -ErrorAction Stop | Select-Object DisplayName
        }
        catch {
            Write-Host "Error retrieving folders for user: $($user.UserPrincipalName)" -ForegroundColor Red
            continue  # Skip to the next user if we can't even retrieve folders
        }
        if (-not $ExistingFolder) {
            # If the folder does not exist, create it
            $body = @{
                DisplayName = $FolderName
            }
            $null = New-MgUserMailFolder -UserId $user.Id -BodyParameter $body

            Write-Host "Folder '$FolderName' has been added for user: $($user.UserPrincipalName)" -ForegroundColor Green
        }
        else {
            Write-Host "Folder '$FolderName' already exists for user: $($user.UserPrincipalName)" -ForegroundColor Yellow
        }
    }
    catch {
        Write-Host "Error processing user $($user.UserPrincipalName): $_" -ForegroundColor Red
    }
}

Крок 2. Запустіть сценарій PowerShell Add-MailboxFolder

ЗапустітьAdd-MailboxFolder.ps1Сценарій PowerShell для створення папки для всіх поштових скриньок в Exchange Online.

У цьому прикладі буде створена папкаПапкаА.

c:scripts.Add-MailboxFolder.ps1 -FolderName "FolderA"

Крок 3. Перевірте додану папку в поштову скриньку

Увійти вOutlookз поштовою скринькою користувача та переконайтеся, що папку створено.

Ось як це виглядає.

Це все!

Висновок

Ви дізналися, як створити папку для всіх поштових скриньок в Exchange Online за допомогою PowerShell. Спочатку встановіть Microsoft Graph PowerShell. Далі запустіть сценарій PowerShell Add-MailboxFolder.ps1. Після цього до всіх поштових скриньок буде додано нову папку.

Вам сподобалася ця стаття? Вам також може сподобатися звіт про закінчення терміну дії реєстрацій додатків Export Entra ID, сертифікатів і секретів. Не забудьте підписатися на нас і поділитися цією статтею.

Related Posts