Організація вирішила, що всі поштові скриньки повинні мати певну папку в 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, сертифікатів і секретів. Не забудьте підписатися на нас і поділитися цією статтею.














