Utwórz folder dla wszystkich skrzynek pocztowych w Exchange Online

Organizacja zdecydowała, że ​​wszystkie skrzynki pocztowe powinny mieć określony folder w swoim Outlooku. Jeśli poproszą o to użytkowników, w większości przypadków zakończy się to niepowodzeniem, ponieważ utworzą go jako podfolder lub z nieprawidłową nazwą. Aby zapewnić spójność i dokładność, najlepszym podejściem jest automatyzacja tego zadania za pomocą programu PowerShell. W tym artykule dowiesz się, jak utworzyć folder dla wszystkich skrzynek pocztowych w Exchange Online (Microsoft 365).

Zainstaluj Microsoft Graph PowerShell

Zanim będziemy mogli przejść dalej i dodać folder do wszystkich skrzynek pocztowych w Exchange Online (Microsoft 365), musimy zainstalować Microsoft Graph PowerShell.

Uruchom Windows PowerShell jako administrator i uruchom poniższe polecenie.

Install-Module Microsoft.Graph -Force

Ważny:Zawsze aktualizuj moduł Microsoft Graph PowerShell do najnowszej wersji przed uruchomieniem polecenia cmdlet lub skryptu, aby zapobiec błędom i nieprawidłowym wynikom.

Teraz, gdy mamy zainstalowany moduł Microsoft Graph PowerShell SDK, możemy przejść do następnego kroku.

Połącz się z Microsoft Graph PowerShell

Aby móc uruchomić skrypt PowerShell, musisz najpierw utworzyć rejestrację aplikacji z odpowiednimi uprawnieniami i kluczem tajnym klienta w celu uwierzytelnienia za pomocą Microsoft Graph PowerShell.

Uprawnienia aplikacji to:

  • Poczta.PrzeczytajZapisz
  • Użytkownik.Przeczytaj.Wszystko

Więcej na ten temat przeczytasz w artykule Jak połączyć się z Microsoft Graph PowerShell.

Więcej czytania:Jak skonfigurować przychodzący SMTP DANE z DNSSEC w Exchange Online

Utwórz folder dla wszystkich skrzynek pocztowych w Exchange Online za pomocą programu PowerShell

Aby utworzyć folder dla wszystkich skrzynek pocztowych w Exchange Online (Microsoft 365) za pomocą programu PowerShell, wykonaj poniższe czynności:

Krok 1. Pobierz skrypt PowerShell Add-MailboxFolder

Pobierz i umieść skrypt PowerShell Add-MailboxFolder.ps1 w plikuC:skryptyfalcówka.

Upewnij się, że plik jest odblokowany, aby zapobiec błędom podczas uruchamiania skryptu. Przeczytaj więcej w artykule Błąd braku podpisu cyfrowego podczas uruchamiania skryptu PowerShell.

Inną opcją jest skopiowanie i wklejenie poniższego kodu do Notatnika. Podaj nazwęDodaj MailboxFolder.ps1i umieść go wC:skryptyfalcówka.

Upewnij się, że zmieniłeś wartości parametrów w liniach27,28, I29.

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

Krok 2. Uruchom skrypt PowerShell Add-MailboxFolder

UruchomDodaj MailboxFolder.ps1Skrypt PowerShell umożliwiający utworzenie folderu dla wszystkich skrzynek pocztowych w Exchange Online.

W tym przykładzie folder, który zostanie utworzony toFolderA.

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

Krok 3. Sprawdź dodany folder w skrzynce pocztowej

Zaloguj się doPerspektywyze skrzynką pocztową użytkownika i sprawdź, czy folder został utworzony.

Tak to wygląda.

To wszystko!

Wniosek

Dowiedziałeś się, jak utworzyć folder dla wszystkich skrzynek pocztowych w Exchange Online przy użyciu programu PowerShell. Najpierw zainstaluj Microsoft Graph PowerShell. Następnie uruchom skrypt PowerShell Add-MailboxFolder.ps1. Następnie do wszystkich skrzynek pocztowych zostanie dodany nowy folder.

Czy podobał Ci się ten artykuł? Możesz także zainteresować się raportem o wygaśnięciu rejestracji aplikacji Entra ID i wygaśnięciu tajemnic. Nie zapomnij nas obserwować i udostępnić ten artykuł.

Related Posts