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:
- Conectarse a Exchange Online mediante PowerShell
- Conectarse a Security & Compliance PowerShell
- Conexión a PowerShell de Exchange Online Protection
- Autenticación de solo aplicación para scripts desatendidos en Exchange Online PowerShell y PowerShell de cumplimiento de seguridad &
- Uso de identidades administradas de Azure para conectarse a Exchange Online PowerShell
- Uso de C# para conectarse a Exchange Online PowerShell
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
Exchange Online PowerShell y Security & Compliance PowerShell ahora usan conexiones de API REST para todos los cmdlets:
- Exchange Online PowerShell: 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 sin dependencia de 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 Exchange Online PowerShell 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 Exchange Online en las conexiones de LA 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 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 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 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 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:
Sugerencia
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. |
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.
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. |
Add-VivaOrgInsightsDelegatedRole | Disponible en v3.7.0-Preview1 o posterior. |
Get-VivaOrgInsightsDelegatedRole | Disponible en v3.7.0-Preview1 o posterior. |
Remove-VivaOrgInsightsDelegatedRole | Disponible en v3.7.0-Preview1 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.
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:
Ejecute PowerShell como superusuario:
sudo pwsh
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 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:
Ejecute PowerShell como superusuario:
sudo pwsh
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, 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.
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).
² 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 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
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 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 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 Exchange Online
Para instalar el módulo por primera vez, siga estos pasos:
Instale o actualice el módulo PowerShellGet, como se describe en Instalación de PowerShellGet.
Cierre y vuelva a abrir la ventana de Windows PowerShell.
Ahora puede usar el cmdlet Install-Module para instalar el módulo desde el 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 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.
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.
Puede usar el cmdlet Update-Module para actualizar el módulo desde el 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.
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.
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 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, 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:
- PropertySets: este parámetro acepta uno o más nombres del conjunto de propiedades disponibles separados por comas. Los conjuntos de propiedades disponibles se describen en Conjuntos de propiedades en Exchange Online cmdlets de módulo de PowerShell.
- Properties: Este parámetro acepta uno o más nombres de propiedades separados por comas.
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 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 los resultados se devuelven mucho más rápido.
Por ejemplo, después de conectarse a Exchange Online PowerShell, en el ejemplo siguiente solo se devuelven las propiedades del conjunto de propiedades Minimum 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 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.6.0
- Get-VivaModuleFeature ahora devuelve información sobre los tipos de identidades para los que la característica admite la creación de directivas (por ejemplo, usuarios, grupos o todo el inquilino).
- Los cmdlets para Viva administración de acceso a características ahora controlan los desafíos de notificación de evaluación continua de acceso (CAE).
- Se ha agregado una corrección para el problema de compatibilidad con el módulo Microsoft.Graph.
Versiones anteriores
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.
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 Viva Feature Access Management (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 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 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 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 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:
- Remoto en el parámetro de Valor clave de Azure (el Certificado). Esta opción mejora la seguridad al buscar el certificado solo en el runtime.
- Local en el almacén de certificados CurrentUser o LocalMachine (el parámetro CertificateThumbprint).
- Local en un archivo de certificados exportado (los parámetros CertificateFilePath y CertificatePassword). Para obtener más información, vea las descripciones de parámetros en Connect-ExchangeOnline y autenticación solo de aplicación para scripts desatendidos en el módulo de PowerShell Exchange Online.
- 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 valorFolderId
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.