Maak een map voor alle postbussen in Exchange Online

De organisatie besloot dat alle mailboxen een specifieke map in hun Outlook moesten hebben. Als ze de gebruikers vragen dit te doen, zal dit in de meeste gevallen fout gaan, omdat ze het als een submap of met een onjuiste naam zullen aanmaken. Om consistentie en nauwkeurigheid te garanderen, is de beste aanpak om deze taak te automatiseren met behulp van PowerShell. In dit artikel leert u hoe u een map aanmaakt voor alle mailboxen in Exchange Online (Microsoft 365).

Installeer Microsoft Graph PowerShell

Voordat we verder kunnen gaan en een map kunnen toevoegen aan alle mailboxen in Exchange Online (Microsoft 365), moeten we Microsoft Graph PowerShell installeren.

Start Windows PowerShell als beheerder en voer de onderstaande opdracht uit.

Install-Module Microsoft.Graph -Force

Belangrijk:Update altijd naar de nieuwste versie van de Microsoft Graph PowerShell-module voordat u een cmdlet of script uitvoert om fouten en onjuiste resultaten te voorkomen.

Nu we de Microsoft Graph PowerShell SDK-module hebben geïnstalleerd, kunnen we naar de volgende stap gaan.

Maak verbinding met Microsoft Graph PowerShell

Om het PowerShell-script te kunnen uitvoeren, moet u eerst een app-registratie maken met de juiste machtigingen en een clientgeheim om te verifiëren met Microsoft Graph PowerShell.

De applicatiemachtigingen zijn:

  • Mail.LezenSchrijven
  • Gebruiker.Alles.lezen

Lees hierover meer in het artikel Verbinding maken met Microsoft Graph PowerShell.

Meer lezen:Hoe u inkomende SMTP DANE met DNSSEC in Exchange Online instelt

Maak een map voor alle mailboxen in Exchange Online met PowerShell

Volg de onderstaande stappen om een ​​map aan te maken voor alle mailboxen in Exchange Online (Microsoft 365) met PowerShell:

Stap 1. Download het Add-MailboxFolder PowerShell-script

Download en plaats het Add-MailboxFolder.ps1 PowerShell-script in hetC:scriptsmap.

Zorg ervoor dat het bestand is gedeblokkeerd om fouten bij het uitvoeren van het script te voorkomen. Lees meer in het artikel Fout niet digitaal ondertekend bij het uitvoeren van PowerShell-script.

Een andere optie is om de onderstaande code te kopiëren en in Kladblok te plakken. Geef het de naamAdd-MailboxFolder.ps1en plaats deze in deC:scriptsmap.

Zorg ervoor dat u de waarden van de parameters in regels wijzigt27,28, En29.

<#
    .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
    }
}

Stap 2. Voer het Add-MailboxFolder PowerShell-script uit

Voer deAdd-MailboxFolder.ps1PowerShell-script om een ​​map te maken voor alle postvakken in Exchange Online.

In dit voorbeeld is de map die wordt gemaaktMapA.

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

Stap 3. Controleer de toegevoegde map in de mailbox

Meld u aan bijVooruitzichtenmet een gebruikerspostvak en controleer of de map is gemaakt.

Dit is hoe het eruit ziet.

Dat is het!

Conclusie

U hebt geleerd hoe u met PowerShell een map kunt maken voor alle postvakken in Exchange Online. Installeer eerst Microsoft Graph PowerShell. Voer vervolgens het PowerShell-script Add-MailboxFolder.ps1 uit. Daarna wordt aan alle mailboxen de nieuwe map toegevoegd.

Vond je dit artikel leuk? Mogelijk vindt u dit ook interessant Export Entra ID-app-registraties Certificaten en geheimen vervalrapport. Vergeet ons niet te volgen en dit artikel te delen.

Related Posts