Administrar Microsoft 365 (anteriormente Office 365) frecuentemente requiere PowerShell para operaciones masivas, automatización y acceso a configuraciones no disponibles en el centro de administración. Esta guía cubre la forma moderna de conectarse usando el módulo ExchangeOnlineManagement, así como la conexión a otros servicios de Microsoft 365.

Importante: Microsoft obsoletó la autenticación básica para Exchange Online en octubre de 2022. El método heredado con New-PSSession ya no funciona. Usa el método moderno con módulos descrito a continuación.

Requisitos previos

  • Windows PowerShell 5.1 o PowerShell 7+
  • Cuenta de administrador de Microsoft 365
  • Conectividad a Internet
  • Módulo PowerShellGet (incluido en Windows 10/11 y Server 2016+)

Instalación de los módulos necesarios

Módulo de gestión de Exchange Online

# Instalar el módulo (ejecutar PowerShell como administrador)
Install-Module -Name ExchangeOnlineManagement -Force -AllowClobber

# O actualizar si ya está instalado
Update-Module -Name ExchangeOnlineManagement

# Verificar la instalación
Get-Module -Name ExchangeOnlineManagement -ListAvailable

Otros módulos útiles de Microsoft 365

# Microsoft Graph (reemplaza los módulos AzureAD y MSOnline)
Install-Module -Name Microsoft.Graph -Force

# Microsoft Teams
Install-Module -Name MicrosoftTeams -Force

# SharePoint Online
Install-Module -Name Microsoft.Online.SharePoint.PowerShell -Force

Conexión a Exchange Online

Conexión estándar (con soporte MFA)

# Importar módulo
Import-Module ExchangeOnlineManagement

# Conectar — abre una ventana del navegador para autenticación
Connect-ExchangeOnline -UserPrincipalName admin@tudominio.com

Se abre una ventana del navegador para autenticación. Completa tu contraseña y el desafío MFA.

Conectar sin solicitud de navegador

Para scripts automatizados en entornos donde no hay navegador disponible:

# Usando autenticación basada en certificados (recomendado para automatización)
Connect-ExchangeOnline -CertificateThumbprint "THUMBPRINT" `
    -AppId "APP-ID" `
    -Organization "tudominio.onmicrosoft.com"

Conectar a un tenant específico (para partners/MSPs)

Connect-ExchangeOnline -UserPrincipalName admin@partner.com `
    -DelegatedOrganization "tenant-cliente.onmicrosoft.com"

Tareas de gestión comunes

Una vez conectado, puedes ejecutar cmdlets de Exchange Online:

Gestión de buzones

# Listar todos los buzones
Get-EXOMailbox -ResultSize Unlimited | Select-Object DisplayName, PrimarySmtpAddress

# Obtener un buzón específico
Get-EXOMailbox -Identity "usuario@tudominio.com" | Format-List

# Obtener estadísticas del buzón (tamaño, número de elementos)
Get-EXOMailboxStatistics -Identity "usuario@tudominio.com" | 
    Select-Object DisplayName, TotalItemSize, ItemCount

# Configurar propiedades del buzón
Set-Mailbox -Identity "usuario@tudominio.com" -MaxReceiveSize 50MB

Grupos de distribución

# Listar todos los grupos de distribución
Get-DistributionGroup -ResultSize Unlimited

# Obtener miembros de un grupo
Get-DistributionGroupMember -Identity "equipo-ventas@tudominio.com"

# Agregar un miembro
Add-DistributionGroupMember -Identity "equipo-ventas" -Member "nuevousuario@tudominio.com"

Reglas de flujo de correo (reglas de transporte)

# Listar todas las reglas de transporte
Get-TransportRule | Select-Object Name, State, Priority

# Deshabilitar una regla
Disable-TransportRule -Identity "Nombre de la regla"

Conexión a otros servicios de Microsoft 365

Microsoft Graph (usuarios, grupos, licencias)

Import-Module Microsoft.Graph

# Conectar con permisos específicos
Connect-MgGraph -Scopes "User.Read.All", "Group.ReadWrite.All"

# Listar todos los usuarios
Get-MgUser -All | Select-Object DisplayName, UserPrincipalName, AccountEnabled

# Obtener información de licencias
Get-MgSubscribedSku | Select-Object SkuPartNumber, ConsumedUnits, 
    @{N='Total';E={$_.PrepaidUnits.Enabled}}

Microsoft Teams

Import-Module MicrosoftTeams

Connect-MicrosoftTeams

# Listar todos los equipos
Get-Team | Select-Object DisplayName, GroupId, Visibility

Desconectar sesiones

Siempre desconéctate al finalizar para liberar recursos:

# Desconectar Exchange Online
Disconnect-ExchangeOnline -Confirm:$false

# Desconectar Microsoft Graph
Disconnect-MgGraph

# Desconectar Teams
Disconnect-MicrosoftTeams

Método heredado (ya no funciona)

Como referencia histórica, este era el método antiguo de conexión. Dejó de funcionar en octubre de 2022 cuando Microsoft deshabilitó la autenticación básica:

# OBSOLETO — NO USAR
$cred = Get-Credential
$session = New-PSSession -ConfigurationName Microsoft.Exchange `
    -ConnectionUri https://ps.outlook.com/powershell/ `
    -Credential $cred -Authentication Basic -AllowRedirection
Import-PSSession $session -Prefix o365

Si aún tienes scripts usando este método, actualízalos para usar Connect-ExchangeOnline.

Solución de problemas

Módulo no encontrado

# Actualizar PowerShellGet primero
Install-Module -Name PowerShellGet -Force
# Luego reintentar la instalación de ExchangeOnlineManagement

Acceso denegado

Asegúrate de que tu cuenta tenga los roles de administrador necesarios:

  • Exchange Administrator para gestión de buzones
  • Global Administrator para acceso completo
  • Security Administrator para funciones de cumplimiento

Tiempo de conexión agotado detrás de un proxy

Connect-ExchangeOnline -UserPrincipalName admin@tudominio.com `
    -PSSessionOption (New-PSSessionOption -ProxyAccessType IEConfig)

Resumen

La forma moderna de administrar Microsoft 365 con PowerShell es el módulo ExchangeOnlineManagement con Connect-ExchangeOnline. Soporta MFA, es mantenido activamente por Microsoft y reemplaza el método obsoleto de autenticación básica. Para la gestión de usuarios y grupos fuera de Exchange, usa el módulo Microsoft.Graph.

Artículos relacionados