Acerca del módulo de PowerShell Exchange Online

El módulo Exchange Online PowerShell 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: Exchange Online PowerShell, PowerShell de cumplimiento de seguridad & y Exchange Online Protection independiente (EOP) Powershell.

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 el módulo Exchange Online PowerShell V3 (abreviado como módulo EXO V3). La versión 2.0.5 y anteriores (2021) se conocía como el módulo Exchange Online PowerShell V2 (abreviado como módulo EXO V2).

Conexiones de API REST en el módulo EXO V3

Todos los cmdlets disponibles en Exchange Online PowerShell y PowerShell de cumplimiento de seguridad & están respaldados por una API REST basada en la versión del módulo EXO V3:

  • Exchange Online PowerShell: v3.0.0 o posterior.
  • PowerShell de cumplimiento de & seguridad: v3.2.0 o posterior.

En Exchange Online PowerShell y en PowerShell de cumplimiento de seguridad &, las conexiones de API REST se usan de forma predeterminada y 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 API REST tienen las siguientes ventajas sobre sus homólogos históricos:

  • Más seguro: los cmdlets de api REST tienen compatibilidad integrada con la autenticación moderna y no se basan en la sesión remota de PowerShell, por lo que PowerShell en el equipo cliente no necesita autenticación básica en WinRM.
  • Más confiable: los cmdlets de la API REST controlan errores transitorios con 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: la conexión evita la configuración de un espacio de ejecución de PowerShell.

Las ventajas de los cmdlets 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 ninguno de los scripts.

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 remoto) están en desuso en Exchange Online PowerShell y PowerShell de cumplimiento de seguridad &. Para obtener más información, consulte aquí y aquí.

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

  • 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 la API de REST en Exchange Online PowerShell:

    • 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 modificador UseCustomRouting de forma experimental e informe de los problemas que encuentre.

  • Use el cmdlet Get-ConnectionInformation para obtener información sobre las conexiones basadas en REST a Exchange Online PowerShell y PowerShell de cumplimiento de seguridad &. Este cmdlet es necesario porque el cmdlet Get-PSSession de Windows PowerShell no devuelve información para las conexiones basadas en REST.

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

    Escenario Salida esperada
    Ejecute antes de un comando Connect-ExchangeOnline o Connect-IPPSSession . Devuelve el valor nothing.
    Ejecute después del comando Connect-ExchangeOnline o Connect-IPPSSession que se conecta en modo de API REST. Devuelve un objeto de información de conexión.
    Ejecute después de varios comandos Connect-ExchangeOnline o Connect-IPPSSession basados en 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 10000 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 información adicional 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 del módulo de PowerShell Exchange Online

Nota:

Para las versiones de disponibilidad general (GA) del módulo, abra una incidencia de soporte técnico para cualquier problema que tenga. Para las versiones preliminares del módulo, use la dirección de correo electrónico como se describe en esta sección. También puede usar la dirección de correo electrónico para comentarios y sugerencias para las versiones de disponibilidad general y versión preliminar del módulo.

Cuando notofique un problema en exocmdletpreview[at]service[dot]microsoft[dot]com, asegúrese de incluir los archivos de registro en su mensaje de correo electrónico. Para generar los archivos de registro, reemplace <Ruta de acceso para almacenar el archivo> de registro por la carpeta de salida que desee y ejecute el siguiente comando:

Connect-ExchangeOnline -EnableErrorReporting -LogDirectoryPath <Path to store log file> -LogLevel All

Nota:

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.

Cmdlets en el módulo de PowerShell Exchange Online

Todas las versiones del módulo contienen nueve cmdlets Get-EXO* exclusivos para Exchange Online PowerShell que están optimizados para la velocidad en escenarios de recuperación masiva de datos (miles y miles de objetos). En la tabla siguiente se muestran los cmdlets de PowerShell mejorados Exchange Online que solo están disponibles en el módulo:

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

Nota:

Si abre varias conexiones a Exchange Online PowerShell en la misma ventana, los cmdlets Get-EXO* siempre se asocian a la última conexión de PowerShell Exchange Online (la 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.

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

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 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 compatibles para el módulo de PowerShell 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.

Nota:

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 Exchange Online.

Linux

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

  • Ubuntu 18.04 LTS
  • Ubuntu 20.04 LTS

Si tiene problemas para usar el módulo en otras distribuciones de Linux, notifique cualquier problema.

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 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, recibirá 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.

Windows PowerShell requisitos y 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 la Windows 10 Universal C Runtime (CRT).

  • ² Esta versión de Windows ha llegado a su fin de soporte técnico 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 el Windows Management Framework 5.1. Para más información, consulte Windows Management Framework 5.1.

Requisitos previos para el módulo de PowerShell Exchange Online

Establecer la directiva de ejecución de PowerShell en RemoteSigned

Nota:

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

Nota:

Las conexiones basadas en 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 Exchange Online PowerShell y PowerShell de cumplimiento de seguridad & 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 remoto):

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 basadas en REST en Windows

Las conexiones basadas en 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.

Nota:

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 basada en REST, recibirá el siguiente error al intentar conectarse:

No se encuentra un cmdlet Update-Manifest

Instalación del módulo de PowerShell 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 el Galería de PowerShell. Normalmente, querrá 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 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 el Galería de PowerShell. Normalmente, querrá 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 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.

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

  • 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
    

Desinstalación del módulo de PowerShell 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 de Exchange Online tradicionales devuelven todas las propiedades de objeto posibles en su salida, incluidas muchas propiedades que a menudo están en blanco o no están interesadas en muchos escenarios. 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 asignarle a todas las propiedades igual importancia y entregarlas en todos los escenarios, hemos categorizado propiedades relacionadas específicas en conjuntos de propiedades. En pocas palabras, estos conjuntos de propiedades son depósitos de dos o más propiedades relacionadas del 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 mínima que incluye un conjunto mínimo de propiedades necesarias para el resultado del cmdlet (por ejemplo, propiedades de identidad). Las propiedades de los conjuntos de propiedades Minimum también se describen en Conjuntos de propiedades en Exchange Online cmdlets de módulo de PowerShell.

  • 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 el tiempo que se tarda en devolver esos resultados es mucho más rápido.

Por ejemplo, después de conectarse a Exchange Online PowerShell, el siguiente ejemplo devuelve solo las propiedades en el conjunto de propiedades mínimas para los primeros diez buzones.

Get-EXOMailbox -ResultSize 10

Por el contrario, el resultado del mismo comando Get-Mailbox devolver, al menos, 230 propiedades para cada uno de los primeros diez 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 Exchange Online.

Notas de la versión

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

Versión actual

Versión 3.4.0

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

Versiones anteriores

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 que se incorporan a Viva administración de acceso a características.

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 del Centro de seguridad & cumplimiento.
  • 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 ha modificado ligeramente. La excepción ahora contiene datos adicionales (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 Espacio principal 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 Exchange Online PowerShell 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 han sido reemplazados por los cmdlets Get-MyAnalyticsConfig y Set-MyAnalyticsConfig. Además, puede configurar el acceso en el nivel de características. 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) se ha habilitado 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>
  • Confiabilidad mejorada de Get-EXOMailboxStatistics ya que se resolvieron ciertos errores de enrutamiento de solicitud que ocasionaban fallas.
  • Uso de memoria optimizado cuando se crea una sesión reutilizando cualquier módulo existente con una nueva sesión en lugar de crear una nueva cada vez que se importa la 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 intencionalmente 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 prefijos.
    • 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. Tenga en cuenta que los cmdlets de PowerShell remoto requieren la autenticación básica de WinRM y no estarán disponibles si está deshabilitada.
  • El parámetro identidad para los cmdlets V2 ahora también es compatible con el nombre y alias. Tenga en cuenta que usar el alias o nombre reduce 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. Seguimos teniendo algunos pocos atributos que tienen diferentes tipos de datos y planeamos controlarlos en los próximos meses.
  • Error corregido: problema de reconexión de sesiones frecuentes cuando se ha invocado Connect-ExchangeOnline con Credentials 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 redirigía 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 conjuntamente con otros módulos de PowerShell en una única ventana de PS.
  • 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 de PowerShell remoto generan errores ocasionales por la diferencia entre la caducidad del token y la inactividad de PSSession.
  • Actualización de seguridad importante.
  • Correcciones de errores y mejoras.