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-PSSessionya 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.