Acerca del módulo de PowerShell de Exchange Online

El módulo de PowerShell de Exchange Online usa la autenticación moderna y funciona con o sin autenticación multifactor (MFA) para conectarse a todos los entornos de PowerShell relacionados con Exchange en Microsoft 365: PowerShell de Exchange Online, PowerShell de cumplimiento de seguridad & y PowerShell independiente de Exchange Online Protection (EOP).

Para obtener instrucciones de conexión con el módulo, consulte los artículos siguientes:

En el resto de este artículo, se explica cómo funciona el módulo, cómo se instala y se mantiene el módulo, y los cmdlets de Exchange Online optimizados disponibles en el módulo.

Sugerencia

La versión 3.0.0 y posteriores (2022) se conoce como módulo de PowerShell V3 de Exchange Online (abreviado como módulo EXO V3). La versión 2.0.5 y anteriores (2021) se conocía como módulo de PowerShell V2 de Exchange Online (abreviado como módulo EXO V2).

Conexiones de API REST en el módulo EXO V3

PowerShell de PowerShell y seguridad de Exchange Online & Cumplimiento de PowerShell ahora usan conexiones de API REST para todos los cmdlets:

  • PowerShell de Exchange Online: módulo EXO V3 v3.0.0 o posterior.
  • PowerShell de cumplimiento de & seguridad: módulo EXO V3 v3.2.0 o posterior.

Las conexiones de API REST requieren los módulos PowerShellGet y PackageManagement. Para obtener más información, vea PowerShellGet para conexiones basadas en REST en Windows.

Los cmdlets de las conexiones de API REST tienen las siguientes ventajas con respecto a sus homólogos históricos:

  • Más seguro: compatibilidad integrada con la autenticación moderna y no se basa en la sesión remota de PowerShell. PowerShell en el equipo cliente no necesita autenticación básica en WinRM.
  • Más confiable: los errores transitorios usan reintentos integrados, por lo que se minimizan los errores o retrasos. Por ejemplo:
    • Errores debidos a retrasos en la red.
    • Retrasos debidos a consultas grandes que tardan mucho tiempo en completarse.
  • Mejor rendimiento: las conexiones de API REST evitan la configuración de un espacio de ejecución de PowerShell.

Las ventajas de los cmdlets en las conexiones de API REST se describen en la tabla siguiente:

  Cmdlets de PowerShell remotos Cmdlets Get-EXO* Cmdlets de API REST
Seguridad Menos seguro Altamente seguro Altamente seguro
Rendimiento Bajo rendimiento Alto rendimiento Rendimiento medio
Confiabilidad Menos confiable Altamente confiable Altamente confiable
Funcionalidad Todos los parámetros y propiedades de salida disponibles Parámetros limitados y propiedades de salida disponibles Todos los parámetros y propiedades de salida disponibles

Los cmdlets de API REST tienen los mismos nombres de cmdlet y funcionan igual que sus equivalentes remotos de PowerShell, por lo que no es necesario actualizar los nombres de cmdlet ni los parámetros en scripts anteriores.

Sugerencia

El cmdlet Invoke-Command no funciona en las conexiones de API REST. Para obtener alternativas, consulte Soluciones alternativas para escenarios de Invoke-Command en conexiones de API REST.

Las conexiones de autenticación básica (PowerShell remota) están en desuso en PowerShell de Exchange Online y PowerShell de cumplimiento de seguridad &. Para obtener más información, consulte aquí y aquí.

Algunos cmdlets de Exchange Online PowerShell se han actualizado con el modificador Experimental UseCustomRouting en las conexiones de la API REST. Este modificador enruta el comando directamente al servidor de buzones de correo necesario y podría mejorar el rendimiento general. Use el modificador UseCustomRouting de forma experimental.

  • Al usar el modificador UseCustomRouting, solo puede usar los siguientes valores para la identidad del buzón:

    • Nombre principal del usuario (UPN)
    • Dirección de correo electrónico
    • GUID del buzón de correo
  • El modificador UseCustomRouting solo está disponible en los siguientes cmdlets de PowerShell de Exchange Online en conexiones de API REST:

    • Get-Clutter
    • Get-FocusedInbox
    • Get-InboxRule
    • Get-MailboxAutoReplyConfiguration
    • Get-MailboxCalendarFolder
    • Get-MailboxFolderPermission
    • Get-MailboxFolderStatistics
    • Get-MailboxMessageConfiguration
    • Get-MailboxPermission
    • Get-MailboxRegionalConfiguration
    • Get-MailboxStatistics
    • Get-MobileDeviceStatistics
    • Get-UserPhoto
    • Remove-CalendarEvents
    • Set-Clutter
    • Set-FocusedInbox
    • Set-MailboxRegionalConfiguration
    • Set-UserPhoto
  • Use el cmdlet Get-ConnectionInformation para obtener información sobre las conexiones de API REST a PowerShell de Exchange Online y PowerShell de seguridad & cumplimiento. Este cmdlet es necesario porque el cmdlet Get-PSSession de Windows PowerShell no devuelve información para las conexiones de API REST.

    Los escenarios en los que puede usar Get-ConnectionInformation se describen en la tabla siguiente:

    Escenario Salida esperada
    Ejecute después de los comandos Connect-ExchangeOnline o Connect-IPPSSession para las conexiones de API REST. Devuelve un objeto de información de conexión.
    Ejecute después de varios comandos Connect-ExchangeOnline o Connect-IPPSSession para las conexiones de API REST. Devuelve una colección de objetos de información de conexión.
  • Use el modificador SkipLoadingFormatData en el cmdlet Connect-ExchangeOnline para evitar la carga de datos de formato y ejecutar comandos Connect-ExchangeOnline más rápido.

  • Los cmdlets respaldados por la API REST tienen un tiempo de espera de 15 minutos, lo que puede afectar a las operaciones masivas. Por ejemplo, el siguiente comando Update-DistributionGroupMember para actualizar 10 000 miembros de un grupo de distribución podría agotar el tiempo de espera:

    $Members = @("member1","member2",...,"member10000")
    
    Update-DistributionGroupMember -Identity DG01 -Members $Members
    

    En su lugar, use el comando Update-DistributionGroupMember para actualizar menos miembros y, a continuación, agregue los miembros restantes individualmente mediante un comando Add-DistributionGroupMember . Por ejemplo:

    Update-DistributionGroupMember -Identity DG01 -Members $Members[0..4999]
    
    $Remaining = $Members[-5000..-1]
    
    foreach ($Member in $Remaining)
    
    {
       Add-DistributionGroupMember -Identity DG01 -Member $Member
    }
    

Para obtener más información sobre las novedades del módulo EXO V3, consulte la sección Notas de la versión más adelante en este artículo.

Notificar errores y problemas para las versiones preliminares del módulo de PowerShell de Exchange Online

Sugerencia

Para las versiones de disponibilidad general (GA) del módulo, no use la siguiente dirección de correo electrónico para notificar problemas. No se responderán los mensajes sobre las versiones de disponibilidad general del módulo. En su lugar, abra una incidencia de soporte técnico.

En versiones preliminares del módulo, use exocmdletpreview[at]service[dot]microsoft[dot]com para notificar los problemas que pueda encontrar. Asegúrese de incluir los archivos de registro en el mensaje de correo electrónico. Para generar los archivos de registro, reemplace Path> por <una carpeta de salida y, a continuación, ejecute el siguiente comando:

Connect-ExchangeOnline -EnableErrorReporting -LogDirectoryPath <Path> -LogLevel All

Cmdlets en el módulo de PowerShell de Exchange Online

El módulo EXO contiene nueve cmdlets Get-EXO* exclusivos que están optimizados para la velocidad en escenarios de recuperación masiva de datos (miles y miles de objetos) en Exchange Online PowerShell. Los cmdlets mejorados del módulo se enumeran en la tabla siguiente:

Cmdlet del módulo EXO Cmdlet anterior relacionado
Get-EXOMailbox Get-Mailbox
Get-EXORecipient Get-Recipient
Get-EXOCasMailbox Get-CASMailbox
Get-EXOMailboxPermission Get-MailboxPermission
Get-EXORecipientPermission Get-RecipientPermission
Get-EXOMailboxStatistics Get-MailboxStatistics
Get-EXOMailboxFolderStatistics Get-MailboxFolderStatistics
Get-EXOMailboxFolderPermission Get-MailboxFolderPermission
Get-EXOMobileDeviceStatistics Get-MobileDeviceStatistics

Sugerencia

Si abre varias conexiones a Exchange Online PowerShell en la misma ventana, los cmdlets Get-EXO* siempre están asociados a la última conexión de PowerShell de Exchange Online (más reciente). Ejecute el siguiente comando para buscar la sesión de la API REST donde se ejecutan los cmdlets Get-EXO* : Get-ConnectionInformation | Where-Object {$_.ConnectionUsedForInbuiltCmdlets -eq $true}.

Los cmdlets relacionados con la conexión del módulo se enumeran en la tabla siguiente:

Cmdlet del módulo EXO Cmdlet anterior relacionado Comentarios
Connect-ExchangeOnline Connect-EXOPSSession en V1 del módulo
o
New-PSSession
Connect-IPPSSession Connect-IPPSSession en V1 del módulo
Disconnect-ExchangeOnline Remove-PSSession
Get-ConnectionInformation Get-PSSession Disponible en la versión 3.0.0 o posterior.

Sugerencia

El uso frecuente de los cmdlets Connect-ExchangeOnline y Disconnect-ExchangeOnline en una sola sesión o script de PowerShell puede provocar una pérdida de memoria. Lo mejor para evitar este problema es usar el parámetro CommandName en el cmdlet Connect-ExchangeOnline para limitar los cmdlets que se usan en la sesión.

Los cmdlets varios de Exchange Online que se encuentran en el módulo se enumeran en la tabla siguiente:

Cmdlet Comentarios
Get-DefaultTenantBriefingConfig Disponible en la versión 3.2.0 o posterior.
Set-DefaultTenantBriefingConfig Disponible en la versión 3.2.0 o posterior.
Get-DefaultTenantMyAnalyticsFeatureConfig Disponible en la versión 3.2.0 o posterior.
Set-DefaultTenantMyAnalyticsFeatureConfig Disponible en la versión 3.2.0 o posterior.
Get-MyAnalyticsFeatureConfig Disponible en la versión 2.0.4 o posteriores.
Set-MyAnalyticsFeatureConfig Disponible en la versión 2.0.4 o posteriores.
Get-UserBriefingConfig Reemplazado con Get-MyAnalyticsFeatureConfig
Set-UserBriefingConfig Reemplazado con Set-MyAnalyticsFeatureConfig.
Get-VivaInsightsSettings Disponible en v2.0.5 o posterior.
Set-VivaInsightsSettings Disponible en v2.0.5 o posterior.
Get-VivaModuleFeature Disponible en la versión 3.2.0 o posterior.
Get-VivaModuleFeatureEnablement Disponible en la versión 3.2.0 o posterior.
Add-VivaModuleFeaturePolicy Disponible en la versión 3.2.0 o posterior.
Get-VivaModuleFeaturePolicy Disponible en la versión 3.2.0 o posterior.
Remove-VivaModuleFeaturePolicy Disponible en la versión 3.2.0 o posterior.
Update-VivaModuleFeaturePolicy Disponible en la versión 3.2.0 o posterior.

Instalación y mantenimiento del módulo de PowerShell de Exchange Online

Descargue el módulo de la galería de PowerShell en https://www.powershellgallery.com/packages/ExchangeOnlineManagement/.

En los procedimientos de esta sección se explica cómo instalar, actualizar y desinstalar el módulo.

Sistemas operativos admitidos para el módulo de PowerShell de Exchange Online

Las versiones más recientes del módulo se admiten oficialmente en PowerShell 7 en Windows, Linux y Apple macOS.

En concreto, la versión 2.0.4 o posterior se admite en PowerShell 7.0.3 o posterior.

Para más información sobre PowerShell 7, consulte el Anuncio de PowerShell 7.0.

Apple macOS

El módulo se admite en las siguientes versiones de macOS:

  • macOS 11 Big Sur o posterior
  • macOS 10.15 Catalina
  • macOS 10.14 Mojave

Para obtener instrucciones sobre cómo instalar PowerShell 7 en macOS, consulte Instalar PowerShell en macOS.

Como se describe en el artículo de instalación, debe instalar OpenSSL, que es necesario para WSMan.

Después de instalar PowerShell 7 y OpenSSL, siga estos pasos:

  1. Ejecute PowerShell como superusuario: sudo pwsh

  2. En la sesión de superusuario de PowerShell, ejecute los siguientes comandos:

    Install-Module -Name PSWSMan
    
    Install-WSMan
    

    Si se le solicita, acepte PSGallery como origen de los cmdlets.

Ahora puede realizar los requisitos previos normales de PowerShell e instalar el módulo de PowerShell de Exchange Online.

Linux

El módulo se admite oficialmente en las siguientes distribuciones de Linux:

  • Ubuntu 24.04 LTS
  • Ubuntu 20.04 LTS
  • Ubuntu 18.04 LTS

Para obtener instrucciones sobre cómo instalar PowerShell 7 en Linux, consulte Instalar PowerShell en Linux.

Después de instalar PowerShell 7, siga estos pasos:

  1. Ejecute PowerShell como superusuario: sudo pwsh

  2. En la sesión de superusuario de PowerShell, ejecute los siguientes comandos:

    Install-Module -Name PSWSMan
    
    Install-WSMan
    

    Si se le solicita, acepte PSGallery como origen de los cmdlets.

Ahora puede realizar los requisitos previos normales de PowerShell e instalar el módulo de PowerShell de Exchange Online.

Nota:

Si se conecta a Exchange Online PowerShell desde una red que está detrás de un servidor proxy, el módulo EXO V2 (versión v2.0.5 o anterior) no funciona en Linux. Debe usar el módulo EXO V3 (v3.0.0 o posterior) en Linux para conectarse desde una red que está detrás de un servidor proxy.

Windows

Todas las versiones del módulo se admiten en Windows PowerShell 5.1.

PowerShell 7 en Windows requiere la versión 2.0.4 o posterior.

La versión 2.0.5 o posterior del módulo requiere que Microsoft .NET Framework 4.7.2 o posterior se conecte. De lo contrario, obtendrá un System.Runtime.InteropServices.OSPlatform error. Este requisito no debe ser un problema en las versiones actuales de Windows. Para obtener más información sobre las versiones de Windows que admiten .NET Framework 4.7.2, consulte este artículo.

Los requisitos de Windows PowerShell y la compatibilidad con módulos en versiones anteriores de Windows se describen en la lista siguiente:

  • Windows 8.1¹

  • Windows Server 2012 o Windows Server 2012 R2¹

  • Windows 7 Service Pack 1 (SP1)² ³ ⁴

  • Windows Server 2008 R2 SP1² ³ ⁴

  • ¹ PowerShell 7 en esta versión de Windows requiere Windows 10 Universal C Runtime (CRT).

  • ² La compatibilidad con esta versión de Windows ha finalizado y ahora solo se admite en máquinas virtuales de Azure.

  • ³ Esta versión de Windows solo admite la versión 2.0.3 o versiones anteriores del módulo.

  • ⁴ Windows PowerShell 5.1 en esta versión de Windows requiere .NET Framework 4.5 o posterior y Windows Management Framework 5.1. Para más información, consulte Windows Management Framework 5.1.

Requisitos previos para el módulo de PowerShell de Exchange Online

Establecer la directiva de ejecución de PowerShell en RemoteSigned

Sugerencia

La configuración de esta sección se aplica a todas las versiones de PowerShell en todos los sistemas operativos.

PowerShell debe estar configurado para ejecutar scripts y, de forma predeterminado, no lo está. Obtendrá el siguiente error al intentar conectar:

No se pueden cargar archivos porque la ejecución de scripts está deshabilitada en este sistema. Proporcione un certificado válido con el cual firmar los archivos.

Para requerir que todos los scripts de PowerShell que se descargue de internet sean de publicadores de confianza, ejecute el siguiente comando en una ventana de PowerShell con permisos elevados (o sea, una ventana de PowerShell que se abre seleccionando Ejecutar como administrador):

Set-ExecutionPolicy RemoteSigned

Para obtener más información sobre las directivas de ejecución, consulte Acerca de las Directivas de ejecución.

Activar la autenticación básica en WinRM

Importante

Las conexiones de API REST no requieren autenticación básica en WinRM, como se describe en esta sección. Como se describió anteriormente en este artículo, el acceso de autenticación básica (PowerShell remoto) a PowerShell de Exchange Online y PowerShell de seguridad & cumplimiento están en desuso. La información de esta sección se mantiene con fines históricos.

Para las conexiones remotas de PowerShell que no usan la API REST (que ahora son imposibles), WinRM debe permitir la autenticación básica. No enviamos la combinación de nombre de usuario y contraseña. El encabezado de autenticación básica es necesario para enviar el token de OAuth de la sesión, ya que la implementación del lado cliente de WinRM no admite OAuth.

Para comprobar que la autenticación básica está habilitada para WinRM, ejecute el siguiente comando en un símbolo del sistema o en Windows PowerShell:

Nota:

Los siguientes comandos requieren que WinRM esté habilitado. Para habilitar WinRM, ejecute el siguiente comando: winrm quickconfig.

winrm get winrm/config/client/auth

Si no ve el valor Basic = true, debe ejecutar uno de los siguientes comandos para habilitar la autenticación básica para WinRM:

  • En un símbolo del sistema:

    winrm set winrm/config/client/auth @{Basic="true"}
    
  • En Windows PowerShell:

    winrm set winrm/config/client/auth '@{Basic="true"}'
    
  • En Windows PowerShell para modificar el registro:

    Set-ItemProperty -Path 'HKLM:\SOFTWARE\Policies\Microsoft\Windows\WinRM\Client' -Name 'AllowBasic' -Type DWord -Value '1'
    

Si la autenticación básica para WinRM está deshabilitada, obtendrá uno de los siguientes errores al intentar conectarse mediante una conexión de autenticación básica (PowerShell remota):

El cliente WinRM no puede procesar la solicitud. Actualmente, la autenticación básica está deshabilitada en la configuración del cliente. Cambie la configuración del cliente e intente de nuevo la solicitud.

Error al crear la sesión de PowerShell con OAuth.

PowerShellGet para conexiones de API REST en Windows

Las conexiones de API REST en Windows requieren el módulo PowerShellGet y, por dependencia, el módulo PackageManagement. La consideración de estos módulos es más para PowerShell 5.1 que para PowerShell 7, pero todas las versiones de PowerShell se benefician de tener instaladas las versiones más recientes de los módulos. Para obtener instrucciones de instalación y actualización, consulte Instalación de PowerShellGet en Windows.

Sugerencia

Las versiones beta de los módulos PackageManagement o PowerShellGet pueden provocar problemas de conexión. Si tiene problemas de conexión, compruebe que no tiene instaladas versiones beta de los módulos mediante la ejecución del siguiente comando: Get-InstalledModule PackageManagement -AllVersions; Get-InstalledModule PowerShellGet -AllVersions.

Si no tiene PowerShellGet instalado al intentar crear una conexión de API REST, recibirá el siguiente error al intentar conectarse:

No se encuentra un cmdlet Update-Manifest

Instalación del módulo de PowerShell de Exchange Online

Para instalar el módulo por primera vez, siga estos pasos:

  1. Instale o actualice el módulo PowerShellGet, como se describe en Instalación de PowerShellGet.

  2. Cierre y vuelva a abrir la ventana de Windows PowerShell.

  3. Ahora puede usar el cmdlet Install-Module para instalar el módulo desde la Galería de PowerShell. Normalmente, quiere la versión pública más reciente del módulo, pero también puede instalar una versión preliminar si hay alguna disponible.

    • Para instalar la versión pública más reciente del módulo, ejecute uno de los siguientes comandos:

      • En una ventana de PowerShell con privilegios elevados (todos los usuarios):

        Install-Module -Name ExchangeOnlineManagement
        
      • Solo para la cuenta de usuario actual:

        Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser
        
    • Para ver las versiones preliminares disponibles del módulo, ejecute el siguiente comando:

      Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease
      
    • Para instalar la versión preliminar más reciente disponible del módulo, ejecute uno de los siguientes comandos:

      • En una ventana de PowerShell con privilegios elevados (todos los usuarios):

        Install-Module -Name ExchangeOnlineManagement -AllowPrerelease
        
      • Solo para la cuenta de usuario actual:

        Install-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
        
    • Para instalar una versión preliminar específica del módulo, reemplace <PreviewVersion> por el valor necesario y ejecute uno de los siguientes comandos:

      • En una ventana de PowerShell con privilegios elevados (todos los usuarios):

        Install-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease
        
      • Solo para la cuenta de usuario actual:

        Install-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease -Scope CurrentUser
        

    Cuando haya terminado, escriba Y para aceptar el contrato de licencia.

Para obtener más información acerca de la sintaxis y los parámetros, vea Install-Module.

Actualización del módulo de PowerShell de Exchange Online

Si el módulo ya está instalado en el equipo, puede usar los procedimientos de esta sección para actualizar el módulo.

  1. Para ver la versión del módulo que está instalado actualmente y dónde está instalado, ejecute el siguiente comando:

    Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation
    

    Si el módulo está instalado en C:\Archivos de programa\WindowsPowerShell\Modules, se instala para todos los usuarios. Si el módulo está instalado en la carpeta Documentos, solo se instala para la cuenta de usuario actual.

  2. Puede usar el cmdlet Update-Module para actualizar el módulo desde la Galería de PowerShell. Normalmente, quiere la versión pública más reciente del módulo, pero también puede actualizar a una versión preliminar si hay alguna disponible.

    • Para actualizar a la versión pública más reciente del módulo, ejecute uno de los siguientes comandos en función de cómo instaló originalmente el módulo (todos los usuarios frente a solo para la cuenta de usuario actual):

      • En una ventana de PowerShell con privilegios elevados (todos los usuarios):

        Update-Module -Name ExchangeOnlineManagement
        
      • Solo para la cuenta de usuario actual:

        Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser
        
    • Para actualizar a una versión preliminar del módulo, puede actualizar a la versión preliminar más reciente disponible o puede usar el parámetro RequiredVersion para actualizar a una versión preliminar específica.

      • Para ver las versiones preliminares disponibles del módulo, ejecute el siguiente comando:

        Find-Module ExchangeOnlineManagement -AllVersions -AllowPrerelease
        
      • Para actualizar a la versión preliminar más reciente disponible del módulo, ejecute uno de los siguientes comandos:

        • En una ventana de PowerShell con privilegios elevados (todos los usuarios):

          Update-Module -Name ExchangeOnlineManagement -AllowPrerelease
          
        • Solo para la cuenta de usuario actual:

          Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser -AllowPrerelease
          
      • Para actualizar a una versión preliminar específica del módulo, reemplace <PreviewVersion> por el valor necesario y ejecute uno de los siguientes comandos:

        • En una ventana de PowerShell con privilegios elevados (todos los usuarios):

          Update-Module -Name ExchangeOnlineManagement -RequiredVersion <PreviewVersion> -AllowPrerelease
          
        • Solo para la cuenta de usuario actual:

          Update-Module -Name ExchangeOnlineManagement -Scope CurrentUser -RequiredVersion <PreviewVersion> -AllowPrerelease
          

    Cuando haya terminado, escriba Y para aceptar el contrato de licencia.

  3. Para confirmar que la actualización se realizó correctamente, ejecute los siguientes comandos para comprobar la información de la versión del módulo instalado:

    Import-Module ExchangeOnlineManagement; Get-Module ExchangeOnlineManagement
    

Para obtener más información acerca de la sintaxis y los parámetros, vea Update-Module.

Solución de problemas de instalación del módulo de PowerShell de Exchange Online

  • Recibe uno de los siguientes errores:

    La versión actual de PowerShellGet no admite el módulo "ExchangeOnlineManagement" especificado con PowerShellGetFormatVersion "version>"<. Obtenga la última versión del módulo PowerShellGet para instalar este módulo "ExchangeOnlineManagement".

    ADVERTENCIA: No se puede descargar desde el URI 'https://go.microsoft.com/fwlink/?LinkID=627338& clcid=0x409" a "".

    ADVERTENCIA: No se puede descargar la lista de proveedores disponibles. Compruebe su conexión a Internet.

    Actualice la instalación del módulo PowerShellGet a la última versión, tal y como se describe en instalación de PowerShellGet. Asegúrese de cerrar y volver a abrir la ventana de PowerShell antes de intentar actualizar el módulo ExchangeOnlineManagement de nuevo.

  • Recibe el siguiente error:

    No se encontró ninguna coincidencia para los criterios de búsqueda especificados y el nombre del módulo 'ExchangeOnlineManagement'. Intente ejecutar Get-PSRepository para ver todos los repositorios de módulos registrados disponibles.

    El repositorio predeterminado para los módulos de PowerShell no está establecido en PSGallery. Para corregir este error, ejecute el siguiente comando:

    Register-PSRepository -Default
    
  • A partir de abril de 2020, la galería de PowerShell solo admite conexiones con TLS 1.2 o posterior. Para más información consulte la Soporte de galería de PowerShell.

    Para comprobar la configuración actual en Microsoft .NET Framework, ejecute el siguiente comando en Windows PowerShell:

    [Net.ServicePointManager]::SecurityProtocol
    

    Como se describe en el artículo de soporte de TLS de la galería de PowerShell, para cambiar temporalmente el protocolo de seguridad TLS 1.2 para instalar los módulos PowerShellGet o ExchangeOnlineManagement, ejecute el siguiente comando en Windows PowerShell antes de instalar el módulo:

    [Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
    

    Para habilitar permanentemente la criptografía segura en Microsoft .NET Framework versión 4.x o posterior, ejecute uno de los siguientes comandos en función de la arquitectura de Windows:

    • x64:

      Set-ItemProperty -Path 'HKLM:\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Type DWord -Value '1'
      
    • x86:

      Set-ItemProperty -Path 'HKLM:\SOFTWARE\Microsoft\.NETFramework\v4.0.30319' -Name 'SchUseStrongCrypto' -Type DWord -Value '1'
      

    Para más información, vea SchUseStrongCrypto.

Desinstalación del módulo de PowerShell de Exchange Online

Para ver la versión del módulo que está instalado actualmente y dónde está instalado, ejecute el siguiente comando:

Get-InstalledModule ExchangeOnlineManagement | Format-List Name,Version,InstalledLocation

Si el módulo está instalado en C:\Archivos de programa\WindowsPowerShell\Modules, se instaló para todos los usuarios. Si el módulo está instalado en la carpeta Documentos, solo se instaló para la cuenta de usuario actual.

Para desinstalar el módulo, ejecute el siguiente comando en uno de los siguientes entornos en función de cómo se instaló originalmente el módulo (todos los usuarios frente a solo para la cuenta de usuario actual):

  • En una ventana de PowerShell con privilegios elevados (todos los usuarios).

  • En una ventana normal de PowerShell (solo para la cuenta de usuario actual).

    Uninstall-Module -Name ExchangeOnlineManagement
    

Para obtener más información acerca de la sintaxis y los parámetros, vea Uninstall-Module.

Propiedades y conjuntos de propiedades en el módulo de PowerShell de Exchange Online

Los cmdlets tradicionales de Exchange Online devuelven todas las propiedades de objeto posibles, incluidas muchas propiedades en blanco o poco interesadas. Este comportamiento causa la degradación del rendimiento (se ha agregado más procesamiento de servidor y carga de red). Rara vez (si nunca) necesita el complemento completo de propiedades en la salida del cmdlet.

Los cmdlets Get-EXO* del módulo han clasificado las propiedades de salida. En lugar de dar a todas las propiedades la misma importancia y devolverlas en todos los escenarios, clasificamos propiedades relacionadas específicas en conjuntos de propiedades. Estos conjuntos de propiedades son depósitos de dos o más propiedades relacionadas en el cmdlet .

Los cmdlets Get-EXO* más grandes y usados usan conjuntos de propiedades:

En esos cmdlets, los conjuntos de propiedades se controlan mediante los parámetros siguientes:

Puede usar el PropertySets y propiedades parámetros conjuntamente en el mismo comando.

También hemos incluido un conjunto de propiedades Minimum que incluye un conjunto mínimo de propiedades necesarias para la salida del cmdlet (por ejemplo, propiedades de identidad). Las propiedades de los conjuntos de propiedades Minimum también se describen en Conjuntos de propiedades en cmdlets de módulo de PowerShell de Exchange Online.

  • Si no usa los parámetros PropertySets o Properties, obtendrá automáticamente las propiedades en el conjunto de propiedades mínimo.
  • Si usa los parámetros PropertySets o Properties, obtendrá las propiedades especificadas y las propiedades del conjunto de propiedades mínimo.

En cualquier caso, la salida del cmdlet contiene muchas menos propiedades y los resultados se devuelven mucho más rápido.

Por ejemplo, después de conectarse a Exchange Online PowerShell, en el ejemplo siguiente se devuelven solo las propiedades de la propiedad Minimum establecida para los primeros 10 buzones.

Get-EXOMailbox -ResultSize 10

Por el contrario, la salida del mismo comando Get-Mailbox devolvería al menos 230 propiedades para cada uno de los primeros 10 buzones.

Nota:

Aunque el parámetro PropertySets acepta el valor All, recomendamos encarecidamente usar este valor para recuperar todas las propiedades, ya que ralentiza el comando y reduce la confiabilidad. Utilice siempre los parámetros PropertySets y Properties para recuperar el número mínimo de propiedades.

Para obtener más información sobre el filtrado en el módulo, vea Filtros en el módulo de PowerShell de Exchange Online.

Notas de la versión

A menos que se indique lo contrario, la versión actual del módulo de PowerShell de Exchange Online contiene todas las características de las versiones anteriores.

Versión actual

Versión 3.5.1

  • Correcciones de errores en Get-EXOMailboxPermission y Get-EXOMailbox.
  • El módulo se ha actualizado para ejecutarse en .NET 8, reemplazando la versión anterior basada en .NET 6.
  • Mejoras en Add-VivaModuleFeaturePolicy.

Versiones anteriores

Versión 3.5.0

  • Nuevo cmdlet Get-VivaFeatureCategory .
  • Se ha agregado compatibilidad con las operaciones de directiva en el nivel de categoría en Administración de acceso a características Viva (VFAM).
  • Nueva propiedad IsFeatureEnabledByDefault en la salida de Get-VivaModuleFeaturePolicy. El valor de esta propiedad muestra el estado de habilitación predeterminado para los usuarios del inquilino cuando no se crearon directivas de inquilino o usuario o grupo.

Versión 3.4.0

  • Correcciones de errores en Connect-ExchangeOnline, Get-EXORecipientPermission y Get-EXOMailboxFolderPermission.
  • El parámetro SigningCertificate de Connect-ExchangeOnline ahora admite el modo de lenguaje restringido (CLM).

Versión 3.3.0

  • Parámetro SkipLoadingCmdletHelp en Connect-ExchangeOnline para admitir la carga de archivos de ayuda de cmdlets de omisión.
  • La variable EXO_LastExecutionStatus global está disponible para comprobar el estado del último cmdlet que se ejecutó.
  • Correcciones de errores en Connect-ExchangeOnline y Connect-IPPSSession.
  • Parámetro IsUserControlEnabled en Add-VivaModuleFeaturePolicy y Update-VivaModuleFeaturePolicy para admitir la habilitación de controles de usuario por directiva para las características incorporadas a la administración de acceso a características Viva.

Versión 3.2.0

  • Nuevos cmdlets:
    • Get-DefaultTenantBriefingConfig y Set-DefaultTenantBriefingConfig.
    • Get-DefaultTenantMyAnalyticsFeatureConfig y Set-DefaultTenantMyAnalyticsFeatureConfig.
    • Get-VivaModuleFeature, Get-VivaModuleFeatureEnablement, Add-VivaModuleFeaturePolicy, Get-VivaModuleFeaturePolicy, Remove-VivaModuleFeaturePolicy y Update-VivaModuleFeaturePolicy.
  • Compatibilidad con la conexión de la API REST para PowerShell de cumplimiento de & de seguridad.
  • Parámetro ConnectionId en Get-ConnectionInformation y Disconnect-ExchangeOnline:
    • Obtenga información de conexión para conexiones de API REST específicas.
    • Desconexión selectiva para las conexiones de API REST.
  • El parámetro SigningCertificate en Connect-ExchangeOnline permite firmar los archivos de formato (*. Format.ps1xml) o archivos de módulo de script (.psm1) en el módulo temporal que Connect-ExchangeOnline crea con un certificado de cliente que se usará en todas las directivas de ejecución de PowerShell.
  • Correcciones de errores en Connect-ExchangeOnline.

Versión 3.1.0

  • Parámetro AccessToken disponible en Connect-ExchangeOnline.
  • Correcciones de errores en Connect-ExchangeOnline y Get-ConnectionInformation.
  • Corrección de errores en Connect-IPPSSession para conectarse a PowerShell de cumplimiento de seguridad & mediante CertificateThumbprint.

Versión 3.0.0 (versiones preliminares conocidas como v2.0.6-PreviewX)

  • Características ya descritas en las conexiones de la API REST en la sección del módulo EXO V3 :
    • Autenticación basada en certificados para PowerShell de cumplimiento de seguridad & (versión 2.0.6-Preview5 o posterior).
    • Cmdlet Get-ConnectionInformation para conexiones basadas en REST (versión 2.0.6-Preview7 o posterior).
    • El modificador SkipLoadingFormatData del cmdlet Connect-ExchangeOnline para conexiones basadas en REST (versión 2.0.6-Preview8 o posterior).
  • El parámetro DelegatedOrganization funciona en el cmdlet Connect-IPPSSession siempre y cuando también use el parámetro AzureADAuthorizationEndpointUri en el comando.
  • Algunos cmdlets que solían solicitar confirmación en escenarios específicos ya no lo hacen. De forma predeterminada, el cmdlet se ejecuta hasta la finalización.
  • El formato del error devuelto por la ejecución del cmdlet con errores se modifica ligeramente. La excepción ahora contiene más datos (por ejemplo, el tipo de excepción) y FullyQualifiedErrorId no contiene .FailureCategory El formato del error está sujeto a modificaciones adicionales.

Versión 2.0.5

  • Nuevos cmdlets Get-OwnerlessGroupPolicy y Set-OwnerlessGroupPolicy para administrar grupos de Microsoft 365 sin propietario.

    Nota:

    Aunque los cmdlets están disponibles en el módulo, esta característica solo está disponible para los miembros de una versión preliminar privada.

  • Nuevos cmdlets Get-VivaInsightsSettings y Set-VivaInsightsSettings para controlar el acceso de los usuarios a las características de Headspace en Viva Insights.

Versión 2.0.4

  • PowerShell 7 se admite oficialmente en Windows, Linux y Apple macOS, como se describe en la sección Requisitos previos para el módulo de PowerShell de Exchange Online de este artículo.

  • El módulo de PowerShell 7 admite el inicio de sesión único (SSO) basado en explorador y otros métodos de inicio de sesión. Para obtener más información, vea Métodos de conexión exclusivos de PowerShell 7.

  • Los cmdlets Get-UserAnalyticsConfig y Set-UserAnalyticsConfig se reemplazaron por Get-MyAnalyticsConfig y Set-MyAnalyticsConfig. Además, puede configurar el acceso en el nivel de característica. Para más información, consulte Configuración de MyAnalytics.

  • Directiva en tiempo real y cumplimiento de seguridad en toda la autenticación basada en usuarios. La evaluación continua de acceso (CAE) está habilitada en el módulo. Obtenga más información acerca de CAE aquí.

  • Las propiedades LastUserActionTime y LastInteractionTime están ahora disponibles en el resultado del cmdlet Get-EXOMailboxStatistics.

  • Ahora, el proceso interactivo de inicio de sesión usa un método más seguro para capturar tokens de acceso mediante URL de respuesta segura.

Versión 2.0.3

  • Disponibilidad general de la autenticación basada en el certificado (CBA), la cual permite usar la autenticación moderna en escenarios de scripting sin supervisión o automatización en segundo plano. Las ubicaciones de almacenamiento de los certificados disponibles son:
  • Conéctese a Exchange Online PowerShell y Security & Compliance PowerShell simultáneamente en una sola ventana de PowerShell.
  • El nuevo parámetro CommandName le permite especificar y restringir los cmdlets de PowerShell de Exchange Online que se importan en una sesión. Esta opción reduce la superficie de memoria para las aplicaciones de uso intensivo de PowerShell.
  • Get-EXOMailboxFolderPermission ahora admite ExternalDirectoryObjectID en el parámetro de identidad.
  • Latencia optimizada de la primera llamada de cmdlet V2. Los resultados de la práctica muestran una reducción de la latencia de la primera llamada de entre 8 segundos hasta aproximadamente 1 segundo. Los resultados reales dependen del tamaño del resultado del cmdlet y del entorno del inquilino.

Versión 1.0.1

  • Versión de disponibilidad general (GA) del módulo EXO V2. Es estable y está listo para su uso en entornos de producción.
  • El cmdlet Get-EXOMobileDeviceStatistics ahora admite el parámetro Identidad.
  • Se mejoró la confiabilidad de la reconexión automática de la sesión en algunos casos en los que se ejecutó un script durante ~ 50 minutos y se generó un error de "cmdlet no encontrado" debido a un error en la lógica de reconexión automática.
  • Se corrigieron problemas de tipo de datos de los dos atributos comúnmente utilizados "User" y "MailboxFolderUser" para facilitar la migración de scripts.
  • Se mejoró el soporte para filtros y ahora admite otros cuatro operadores: EndsWith, Contains, Not y NotLike. Compruebe filtros en el módulo de PowerShell de Exchange Online para obtener atributos que no se admiten en los filtros.

Versión 0.4578.0

  • Se agregó compatibilidad para configurar el correo electrónico de informe para su organización en el nivel de usuario con los cdmlets Set-UserBriefingConfig y Get-UserBriefingConfig.
  • Admite la limpieza de la sesión con el cmdlet Disconnect-ExchangeOnline. Este cmdlet es el equivalente V2 de Get-PSSession | Remove-PSSession. Además de limpiar el objeto de sesión y los archivos locales, también elimina el token de acceso de la memoria caché, que se usa para autenticarse en los cmdlets V2.
  • Ahora puede usar FolderId como parámetro de identidad en Get-EXOMailboxFolderPermission. Puede obtener el valor FolderId con Get-MailboxFolder. Por ejemplo: Get-MailboxFolderPermission -Identity <UPN>:<Folder-Path>Get-MailboxFolderPermission -Identity <UPN>:\<Folder-Id>
  • Se ha mejorado la confiabilidad de Get-EXOMailboxStatistics , ya que se han resuelto ciertos errores de enrutamiento de solicitudes que provocaron errores.
  • Uso optimizado de memoria cuando se crea una sesión volviendo a usar cualquier módulo existente con una nueva sesión en lugar de crear una nueva cada vez que se importa una sesión.

Versión 0.4368.1

  • Se ha agregado compatibilidad con los cmdlets de Security & Compliance de PowerShell mediante el cmdlet Connect-IPPSSession.
  • Ocultar la pancarta de anuncio está disponible con el conmutador de ShowBanner (-ShowBanner:$false).
  • Se finalizó la ejecución del cmdlet en la excepción de cliente.
  • PowerShell remoto contenía varios tipos de datos complejos que no se admitían intencionadamente en los cmdlets EXO para mejorar el rendimiento. Se han resuelto las diferencias en los tipos de datos no complejos entre los cmdlets de PowerShell remoto y los cmdlets v2 para permitir la migración sin problemas de scripts de administración.

Versión 0.3582.0

  • Compatibilidad con el prefijo durante la creación de la sesión:
    • Solo puede crear una sesión a la vez que contenga cmdlets con prefijo.
    • Los cmdlets EXO V2 no tienen prefijo porque ya tienen el prefijo EXO, por lo que no se usan EXO como prefijo.
  • Use los cmdlets EXO V2 incluso si la autenticación básica de WinRM está deshabilitada en el equipo cliente. Las conexiones remotas de PowerShell requieren la autenticación básica de WinRM y los cmdlets remotos de PowerShell no están disponibles si la autenticación básica está deshabilitada en WinRM.
  • El parámetro identity para los cmdlets V2 ahora admite Name y Alias. El uso de Alias o Nombre ralentiza el rendimiento de los cmdlets V2, por lo que no se recomienda usarlos.
  • Se corrigió un problema en el que el tipo de datos de los atributos entregado por el cmdlet V2 era diferente de los cmdlets de PowerShell remoto. Todavía tenemos pocos atributos con tipos de datos diferentes y tenemos previsto controlarlos en los próximos meses.
  • Error corregido: Problema de reconexión de sesiones frecuentes al invocar Connect-ExchangeOnline con Credenciales o UserPrincipalName

Versión 0.3555.1

  • Se corrigió un error de fallo en los cmdlets por canalizaciones con el siguiente error por un problema de autenticación:

    No se puede invocar la canalización porque el espacio de ejecución no está en estado Abierto. El estado actual del espacio de ejecución es "cerrado".

Versión 0.3527.4

  • Contenido de Get-Help actualizado.
  • Se ha corregido un problema en Get-Help por el que el parámetro Online redirigeba a una página inexistente con el código de error 400.

Versión 0.3527.3

  • Se agregó compatibilidad para administrar Exchange en un espacio empresarial distinto mediante el flujo de delegación.
  • Funciona en conjunto con otros módulos de PowerShell en una sola ventana de PowerShell.
  • Compatibilidad agregada para los parámetros de posición.
  • El campo de fecha y hora ahora es compatible con la configuración regional del cliente.
  • Corrección de errores: PSCredential vacío cuando se ha pasado durante Connect-ExchangeOnline.
  • Corrección de errores: error en el módulo cliente cuando el filtro contenía $null.
  • Las sesiones creadas internamente al módulo EXO V2 ahora tienen nombres (patrón de nomenclatura: ExchangeOnlineInternalSession_% SomeNumber%).
  • Corrección de errores: los cmdlets remotos de PowerShell producen errores intermitentes debido al tiempo que la diferencia entre la expiración del token y la sesión que está inactiva.
  • Actualización de seguridad importante.
  • Correcciones de errores y mejoras.