Conexión a Exchange Online PowerShell

Este artículo contiene instrucciones sobre cómo conectarse a Exchange Online PowerShell mediante el módulo de PowerShell de Exchange Online con o sin autenticación multifactor (MFA).

El módulo de PowerShell de Exchange Online usa la autenticación moderna para conectarse a todos los entornos de PowerShell relacionados con Exchange en Microsoft 365: PowerShell de Exchange Online, PowerShell de cumplimiento de & de seguridad y PowerShell independiente de Exchange Online Protection (EOP). Para obtener más información sobre el módulo de PowerShell de Exchange Online, consulte Acerca del módulo de PowerShell de Exchange Online.

Para conectarse a Exchange Online PowerShell para la automatización, consulte Autenticación de solo aplicación para scripts desatendidos y Uso de identidades administradas de Azure para conectarse a Exchange Online PowerShell.

Para conectarse a Exchange Online PowerShell desde C#, consulte Uso de C# para conectarse a PowerShell de Exchange Online.

¿Qué necesita saber antes de empezar?

Sugerencia

¿Problemas? Pregunte en el foro Exchange Online.

Paso 1: Carga del módulo de PowerShell de Exchange Online

Nota:

Si el módulo ya está instalado, normalmente puede omitir este paso y ejecutar Connect-ExchangeOnline sin cargar manualmente primero el módulo.

Después de instalar el módulo, abra una ventana de PowerShell y cargue el módulo ejecutando el siguiente comando:

Import-Module ExchangeOnlineManagement

Paso 2: Conexión y autenticación

Nota:

Es probable que se produzca un error en los comandos de conexión si la ruta de acceso del perfil de la cuenta que usó para conectarse contiene caracteres especiales de PowerShell (por ejemplo, $). La solución alternativa consiste en conectarse con una cuenta diferente que no tenga caracteres especiales en la ruta de acceso del perfil.

El comando que necesita ejecutar usa la sintaxis siguiente:

Connect-ExchangeOnline -UserPrincipalName <UPN> [-ExchangeEnvironmentName <Value>] [-ShowBanner:$false] [-DelegatedOrganization <String>] [-SkipLoadingFormatData]

Para obtener información detallada acerca de la sintaxis y los parámetros, consulte Connect-ExchangeOnline.

  • <UPN> es su cuenta en formato de nombre principal de usuario (por ejemplo, navin@contoso.onmicrosoft.com).

  • Con el módulo EXO V3 (v3.0.0 o posterior) y la desaparición de las conexiones de autenticación básica (PowerShell remota) a Exchange Online, solo se usan cmdlets de API REST. Para obtener más información, consulte Conexiones de API REST en el módulo EXO V3.

  • Cuando usa el parámetro ExchangeEnvironmentName, no es necesario usar los parámetros ConnectionUri o AzureADAuthorizationEndPointUrl. Los valores comunes para el parámetro ExchangeEnvironmentName se describen en la tabla siguiente:

    Entorno Valor
    Microsoft 365 o Microsoft 365 GCC No aplicable*
    Microsoft 365 GCC High O365USGovGCCHigh
    Microsoft 365 DoD O365USGovDoD
    Office 365 Germany O365GermanyCloud
    Office 365 operado por 21Vianet O365China

    * El valor O365Default necesario también es el valor predeterminado, por lo que no es necesario usar el parámetro ExchangeEnvironmentName en entornos de Microsoft 365 o Microsoft 365 GCC.

  • El parámetro DelegatedOrganization especifica la organización del cliente que desea administrar como partner autorizado. Para obtener más información, consulte los ejemplos de conexión más adelante en este artículo.

  • En función de la naturaleza de la organización, es posible que pueda omitir el parámetro UserPrincipalName en el comando de conexión. En su lugar, escriba el nombre de usuario y la contraseña o seleccione las credenciales almacenadas después de ejecutar el comando Connect-ExchangeOnline. Si esto no funciona, necesitará usar el parámetro UserPrincipalName.

  • Si no está utilizando MFA, debería poder usar el parámetro Credential en lugar del parámetro UserPrincipalName. En primer lugar, ejecuta el comando $Credential = Get-Credential, escriba su nombre de usuario y contraseña y luego usa el nombre variable para el parámetro Credential (-Credential $Credential). Si esto no funciona, necesitará usar el parámetro UserPrincipalName.

  • Use el modificador SkipLoadingFormatData para evitar errores al conectarse a Exchange Online PowerShell desde un servicio de Windows.

  • El uso del módulo en PowerShell 7 requiere la versión 2.0.4 o posterior.

Los ejemplos de conexión de las secciones siguientes usan la autenticación moderna y no pueden usar la autenticación básica.

Conexión a Exchange Online PowerShell con un símbolo del sistema de inicio de sesión interactivo

  1. Los ejemplos siguientes funcionan en Windows PowerShell 5.1 y PowerShell 7 para cuentas con o sin MFA:

    • Este ejemplo se conecta al PowerShell de Exchange Online en una organización de Microsoft 365 o Microsoft 365 GCC:

      Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com
      
    • Este ejemplo se conecta al PowerShell de Exchange Online en una organización de Microsoft GCC High:

      Connect-ExchangeOnline -UserPrincipalName laura@blueyonderairlines.us -ExchangeEnvironmentName O365USGovGCCHigh
      
    • Este ejemplo se conecta al PowerShell de Exchange Online en una organización de Microsoft 365 DoD:

      Connect-ExchangeOnline -UserPrincipalName julia@adatum.mil -ExchangeEnvironmentName O365USGovDoD
      
    • Este ejemplo se conecta al PowerShell de Exchange Online en una organización de Office 365 Germany:

      Connect-ExchangeOnline -UserPrincipalName lukas@fabrikam.de -ExchangeEnvironmentName O365GermanyCloud
      
  2. En la ventana de inicio de sesión que se abre, escriba su contraseña y, después, haga clic en Iniciar sesión.

    Escriba su contraseña en la ventana de inicio de sesión de su cuenta.

    Nota:

    En PowerShell 7, el inicio de sesión único (SSO) basado en explorador se usa de forma predeterminada, por lo que el símbolo del sistema de inicio de sesión se abre en el explorador web predeterminado en lugar de en un cuadro de diálogo independiente.

  3. Solo MFA: Se genera y se entrega un código de verificación basándose en la opción de respuesta de comprobación que se ha configurado para su cuenta (por ejemplo, un mensaje de texto o la aplicación Microsoft Authenticator de su dispositivo).

    En la ventana de comprobación que se abre, escriba el código de comprobación y, después, haga clic en Verificar.

    Escriba su código de verificación en la ventana de inicio de sesión de su cuenta.

Métodos de conexión exclusivos de PowerShell 7

  • En PowerShell 7 para cuentas sin MFA, en este ejemplo se solicitan credenciales en la ventana de PowerShell:

    Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -InlineCredential
    
  • En PowerShell 7 para cuentas con o sin MFA, en este ejemplo se usa otro equipo para autenticar y completar la conexión. Normalmente, este método se usa en equipos que no tienen exploradores web (los usuarios no pueden escribir sus credenciales en PowerShell 7):

    1. Ejecute el siguiente comando en el equipo donde desea conectarse:

      Connect-ExchangeOnline -Device
      

      El comando de conexión espera en la salida siguiente:

      Para iniciar sesión, use un explorador web para abrir la página https://microsoft.com/devicelogin y escriba el código <XXXXXXXXX> para autenticarse.

      Anote el valor de <código XXXXXXXXX> .

    2. En cualquier otro dispositivo con un explorador web y acceso a Internet, abra https://microsoft.com/devicelogin y escriba el <valor de código XXXXXXXXX> del paso anterior.

    3. Escriba sus credenciales en las páginas resultantes.

    4. En el símbolo del sistema de confirmación, haga clic en Continuar. El siguiente mensaje debe indicar que se ha realizado correctamente y puede cerrar el explorador o la pestaña.

    5. El comando del paso 1 sigue conectándose a PowerShell de Exchange Online.

Conexión a Exchange Online PowerShell sin un símbolo del sistema de inicio de sesión (scripts desatendidos)

Para obtener instrucciones completas, consulte Autenticación de solo aplicación para scripts desatendidos en PowerShell de Exchange Online y PowerShell de cumplimiento de seguridad &.

Conexión a PowerShell de Exchange Online en organizaciones de clientes

Para obtener más información sobre los asociados y las organizaciones de clientes, consulte los temas siguientes:

Este ejemplo se conecta a las organizaciones de clientes en los siguientes escenarios:

  • Conéctese a una organización de clientes mediante una cuenta de CSP.

  • Conéctese a una organización de clientes mediante un GDAP.

  • Conéctese a una organización de clientes como usuario invitado.

    Connect-ExchangeOnline -UserPrincipalName navin@contoso.onmicrosoft.com -DelegatedOrganization adatum.onmicrosoft.com
    

Conexión a Exchange Online PowerShell mediante identidad administrada

Para obtener más información, consulte Uso de identidades administradas de Azure para conectarse a PowerShell de Exchange Online.

  • Identidad administrada asignada por el sistema:

    Connect-ExchangeOnline -ManagedIdentity -Organization "cohovinyard.onmicrosoft.com"
    
  • Identidad administrada asignada por el usuario:

    Connect-ExchangeOnline -ManagedIdentity -Organization "constoso.onmicrosoft.com" -ManagedIdentityAccountId <ManagedIdentityAccountIdGuid>
    

Paso 3: Desconectar cuando haya terminado

Asegúrese de desconectar la sesión cuando haya terminado. Si cierra la ventana de PowerShell sin desconectar la sesión, podría usar todas las sesiones disponibles y debe esperar a que expiren las sesiones. Para desconectar la sesión, ejecute el siguiente comando:

Disconnect-ExchangeOnline

Para desconectarse silenciosamente sin un símbolo del sistema de confirmación, ejecute el siguiente comando:

Disconnect-ExchangeOnline -Confirm:$false

Nota:

Es probable que se produzca un error en el comando disconnect si la ruta de acceso del perfil de la cuenta que usó para conectarse contiene caracteres especiales de PowerShell (por ejemplo, $). La solución alternativa consiste en conectarse con una cuenta diferente que no tenga caracteres especiales en la ruta de acceso del perfil.

¿Cómo sabe que se ha conectado correctamente?

Si no recibe ningún error, se ha conectado correctamente. Una prueba rápida consiste en ejecutar un cmdlet de PowerShell de Exchange Online, por ejemplo, Get-AcceptedDomain, y ver los resultados.

Si surgen errores, compruebe los siguientes requisitos:

  • Un problema habitual es una contraseña incorrecta. Vuelva a ejecutar los pasos de conexión y preste mucha atención al nombre de usuario y la contraseña que use.

  • La cuenta a la que se usa para conectarse debe estar habilitada para el acceso a PowerShell. Para obtener más información, vea Habilitar o deshabilitar el acceso a PowerShell de Exchange Online.

  • Debe abrir el tráfico del puerto TCP 80 entre su equipo local y Microsoft 365. Probablemente esté abierto, pero es un aspecto que se debe tener en cuenta si la directiva de acceso a Internet de su organización es restrictiva.

  • Si su organización usa la autenticación federada, y el proveedor de identidades (IDP) o el servicio de token de seguridad (STS) no están disponibles públicamente, no podrá usar una cuenta federada para conectarse a Exchange Online PowerShell. En su lugar, cree y use una cuenta no federada en Microsoft 365 para conectarse a Exchange Online PowerShell.

  • Las conexiones basadas en REST a Exchange Online PowerShell requieren el módulo PowerShellGet y, por dependencia, el módulo PackageManagement, por lo que recibirá errores si intenta conectarse sin tenerlas instaladas. Por ejemplo, es posible que vea el siguiente error:

    El término "Update-ModuleManifest" no se reconoce como el nombre de un cmdlet, función, archivo de script o programa operable. Compruebe la ortografía del nombre o, si se ha incluido una ruta, asegúrese de que la ruta es correcta e inténtelo de nuevo.

    Para obtener más información sobre los requisitos de los módulos PowerShellGet y PackageManagement, consulte PowerShellGet para conexiones basadas en REST en Windows.

  • Después de conectarse, es posible que reciba un error similar al siguiente:

    No se pudo cargar el archivo o ensamblado "System.IdentityModel.Tokens.Jwt,Version=<Version>, Culture=neutral, PublicKeyToken=<TokenValue>". No se pudo encontrar ni cargar un archivo específico.

    Este error se produce cuando el módulo de PowerShell de Exchange Online entra en conflicto con otro módulo que se importa en el espacio de ejecución. Intente conectarse en una nueva ventana de Windows PowerShell antes de importar otros módulos.

Apéndice: Comparación de métodos de conexión antiguos y nuevos

En esta sección se intenta comparar los métodos de conexión anteriores que se han reemplazado por el módulo de PowerShell de Exchange Online. Los procedimientos de autenticación básica y token de OAuth solo se incluyen como referencia histórica y ya no se admiten.

Conexión sin autenticación multifactor

  • Módulo de PowerShell de Exchange Online con símbolo del sistema interactivo de credenciales:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • Módulo de PowerShell de Exchange Online sin símbolo del sistema interactivo de credenciales:

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    Connect-ExchangeOnline -Credential $o365cred
    
  • Autenticación básica:

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/ -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession con token de OAuth:

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?BasicAuthToOAuthConversion=true -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Conexión con la autenticación multifactor

  • Módulo de PowerShell de Exchange Online con símbolo del sistema interactivo de credenciales:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com
    
  • Autenticación básica: no disponible.

  • New-PSSession con token de OAuth: no disponible.

Conexión a una organización de clientes con una cuenta de CSP

  • Módulo de PowerShell de Exchange Online:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • Autenticación básica:

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession con token de OAuth:

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/? DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Conexión a una organización de clientes mediante GDAP

  • Módulo de PowerShell de Exchange Online:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • Autenticación básica:

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession con token de OAuth:

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Conexión a una organización de clientes como usuario invitado

  • Módulo de PowerShell de Exchange Online:

    Connect-ExchangeOnline -UserPrincipalName admin@contoso.onmicrosoft.com -DelegatedOrganization delegated.onmicrosoft.com
    
  • Autenticación básica:

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession con token de OAuth:

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?DelegatedOrg=delegated.onmicrosoft.com&BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@delegated.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Conexión para ejecutar scripts desatendidos

  • Módulo de PowerShell de Exchange Online:

    • Huella digital del certificado:

      Nota:

      El parámetro CertificateThumbprint solo se admite en Microsoft Windows.

      Connect-ExchangeOnline -CertificateThumbPrint "012THISISADEMOTHUMBPRINT" -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
      
    • Objeto Certificate:

      Connect-ExchangeOnline -Certificate <%X509Certificate2Object%> -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
      
    • Archivo de certificado:

      Connect-ExchangeOnline -CertificateFilePath "C:\Users\navin\Desktop\automation-cert.pfx" -CertificatePassword (ConvertTo-SecureString -String "<Password>" -AsPlainText -Force) -AppID "36ee4c6c-0812-40a2-b820-b22ebd02bce3" -Organization "contoso.onmicrosoft.com"
      

    Para obtener más información, consulte Autenticación de solo aplicación para scripts desatendidos en PowerShell de Exchange Online y PowerShell de cumplimiento de seguridad &.

  • Autenticación básica:

    $secpasswd = ConvertTo-SecureString '<Password>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $secpasswd)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/ -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    
  • New-PSSession con token de OAuth:

    $oauthTokenAsPassword = ConvertTo-SecureString '<EncodedOAuthToken>' -AsPlainText -Force
    
    $o365cred = New-Object System.Management.Automation.PSCredential ("admin@contoso.onmicrosoft.com", $oauthTokenAsPassword)
    
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/PowerShell-LiveID/?BasicAuthToOAuthConversion=true&email=SystemMailbox{bb558c35-97f1-4cb9-8ff7-d53741dc928c}@contoso.onmicrosoft.com -Credential $o365cred -Authentication Basic -AllowRedirection
    
    Import-PSSession $Session
    

Conexión mediante identidad administrada

  • Módulo de PowerShell de Exchange Online:

    • Identidad administrada asignada por el sistema:

      Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com"
      
    • Identidad administrada asignada por el usuario:

      Connect-ExchangeOnline -ManagedIdentity -Organization "contoso.onmicrosoft.com" -ManagedIdentityAccountId <UserAssignedManagedIdentityPrincipalIdValue>
      

    Para obtener más información, consulte Uso de identidades administradas de Azure para conectarse a PowerShell de Exchange Online.

  • Autenticación básica: no disponible.

  • New-PSSession con token de OAuth: no disponible.