Crear carpeta para todos los buzones en Exchange Online

La organización decidió que todos los buzones de correo deberían tener una carpeta específica en Outlook. Si piden a los usuarios que lo hagan, en la mayoría de los casos saldrá mal, ya que la crearán como una subcarpeta o con un nombre incorrecto. Para garantizar la coherencia y la precisión, el mejor enfoque es automatizar esta tarea mediante PowerShell. En este artículo, aprenderá cómo crear una carpeta para todos los buzones de correo en Exchange Online (Microsoft 365).

Instalar Microsoft Graph PowerShell

Antes de que podamos continuar y agregar una carpeta a todos los buzones de correo en Exchange Online (Microsoft 365), debemos instalar Microsoft Graph PowerShell.

Inicie Windows PowerShell como administrador y ejecute el siguiente comando.

Install-Module Microsoft.Graph -Force

Importante:Actualice siempre a la última versión del módulo Microsoft Graph PowerShell antes de ejecutar un cmdlet o script para evitar errores y resultados incorrectos.

Ahora que tenemos instalado el módulo SDK de Microsoft Graph PowerShell, podemos pasar al siguiente paso.

Lectura recomendada:

Conéctese a Microsoft Graph PowerShell

Para poder ejecutar el script de PowerShell, primero debe crear un registro de aplicación con los permisos correctos y un secreto de cliente para autenticarse con Microsoft Graph PowerShell.

Los permisos de la aplicación son:

  • Correo.LeerEscribir
  • Usuario.Leer.Todo

Lea más sobre esto en el artículo Cómo conectarse a Microsoft Graph PowerShell.

Crear carpeta para todos los buzones de correo en Exchange Online con PowerShell

Para crear una carpeta para todos los buzones de correo en Exchange Online (Microsoft 365) con PowerShell, siga los pasos a continuación:

Paso 1. Descargue el script de PowerShell Add-MailboxFolder

Descargue y coloque el script de PowerShell Add-MailboxFolder.ps1 en elC:guionescarpeta.

Asegúrese de que el archivo esté desbloqueado para evitar errores al ejecutar el script. Lea más en el artículo Error sin firma digital al ejecutar el script de PowerShell.

Otra opción es copiar y pegar el código siguiente en el Bloc de notas. Dale el nombreAgregar-carpeta de buzón.ps1y colóquelo en elC:guionescarpeta.

Asegúrese de cambiar los valores de los parámetros en las líneas.27,28, y29.

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

Paso 2. Ejecute el script de PowerShell Add-MailboxFolder

Ejecute elAgregar-carpeta de buzón.ps1Script de PowerShell para crear una carpeta para todos los buzones de correo en Exchange Online.

En este ejemplo, la carpeta que se creará esCarpeta A.

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

Paso 3. Verificar la carpeta agregada en el buzón

Inicie sesión enPerspectivacon un buzón de usuario y verifique que la carpeta esté creada.

Esto es lo que parece.

¡Eso es todo!

Conclusión

Aprendió a crear una carpeta para todos los buzones de correo en Exchange Online usando PowerShell. Primero, instale Microsoft Graph PowerShell. A continuación, ejecute el script de PowerShell Add-MailboxFolder.ps1. Después de eso, a todos los buzones se les agregará la nueva carpeta a su buzón.

¿Disfrutaste este artículo? También te puede interesar Exportar el informe de vencimiento de secretos y certificados de registros de la aplicación Entra ID. No olvides seguirnos y compartir este artículo.

Related Posts