Conectar Office 365 Exchange Online con PowerShell: Guía paso a paso

Gestionar Microsoft 365 con todas las aplicaciones mediante una interfaz gráfica de usuario en un navegador web puede resultar cómodo, pero solo hasta cierto punto. Las dos interfaces más utilizadas por los profesionales de TI son el Centro de administración de Exchange y el Centro de administración de Office 365. Sin embargo, cuando necesite gestionar cientos de cuentas de Microsoft 365 en toda una organización, la interfaz de línea de comandos (CLI) puede ser una solución más eficaz. Puede utilizarlo para aplicar comandos de Exchange Online no disponibles en el Centro de administración.

Como administrador, puede gestionar Microsoft Exchange Server a través de la interfaz de línea de comandos de PowerShell de Microsoft. El problema es que los cmdlets habituales que se utilizan en un entorno Exchange Server local no sirven para Exchange Online basado en la nube. Debe instalar los módulos de Powershell de Exchange Online para habilitar los cmdlets de PowerShell en Office 365. En este post, explicamos las distintas formas de conectar Exchange Online a PowerShell. El uso de cmdlets en Exchange Online ayuda a agilizar la gestión, ahorrando así tiempo y esfuerzo.

Backup for Microsoft 365 Data

Backup for Microsoft 365 Data

Use the NAKIVO solution to back up Microsoft 365 data in Exchange Online, Teams, OneDrive and SharePoint Online for uninterrupted workflows and zero downtime.

Preparación del entorno

Requisitos del sistema

Para conectar Exchange Online a Powershell, asegúrese de que su sistema cumple los siguientes requisitos:

  • Windows 7 SP1, o versiones más recientes de Windows para equipos de sobremesa, y Windows Server 2008 R2 SP1, o versiones más recientes de Windows para servidores. Además de Windows Management Framework 3.0, 4.0 o 5.1, es necesario tener instalado .NET Framework 4.5 o una versión posterior.
  • Conexión a Internet: Abre el puerto TCP 80 para establecer una conexión entre tu máquina local y el host de destino.
  • El usuario actual con PowerShell de Exchange Online tiene el acceso activado. Las cuentas ADMIN disponen de este acceso por defecto.

    Puede habilitar el acceso para conectarse a PowerShell de Exchange Online para una cuenta específica con el siguiente cmdlet:

    Set-User -Identity user@domain.com -RemotePowerShellEnabled $true

Instalación del módulo PowerShell de Exchange Online

Es necesario instalar el módulo PowerShell de Exchange Online porque incluye cmdlets y, por tanto, permite la gestión de Exchange para un inquilino. En esta guía, instalaremos el módulo PowerShell de Exchange Online V2.

Sin embargo, es posible que desee comprobar si el módulo Exchange Online ya está instalado en el equipo cliente. Para ello, ejecute el siguiente cmdlet:

Get-Module -ListAvailable -Name ExchangeOnlineManagement

Si no encuentra el módulo, proceda con la instalación. Puede instalar el módulo Powershell de Exchange Online con un único comando PowerShell. Para iniciar el proceso, ejecute Windows PowerShell como administrador y, a continuación, ejecute el siguiente cmdlet:

#Install Exchange Online Management Module

Install-Module -Name ExchangeOnlineManagement -Force

En caso de que el sistema le pida que confirme la instalación desde un repositorio no fiable, pulse Y para continuar.

Si el módulo PowerShell de Exchange Online está ausente en su sistema, se mostrará el siguiente mensaje de error:

Conectar-ExchangeOnline: El término ‘Conectar-ExchangeOnline’ no se reconoce como el nombre de un cmdlet, función, archivo de script o programa operable.

Puede actualizar el módulo con este cmdlet:

Update-Module ExchangeOnlineManagement

Configurar la conexión

En esta guía, cubrimos los dos métodos principales utilizados para conectar PowerShell a Exchange Online: configuración manual y automatizada.

Configuración manual

Empecemos por el método manual para entender mejor el proceso de configuración:

  1. Abra Windows PowerShell y elija una de las siguientes opciones para continuar:
    • Pulse Inicio, escriba cmd y, a continuación, haga clic con el botón derecho en el elemento Símbolo del sistema. En el menú contextual, seleccione Ejecutar como administrador.
    • O vaya a Inicio > Windows PowerShell. Haga clic con el botón derecho en Windows PowerShell y, a continuación, seleccione Ejecutar como administrador en el menú contextual. Ejecutar PowerShell en modo ADMIN le permite ejecutar cmdlets sin limitaciones.
  2. Los scripts deben estar activados para utilizar PowerShell correctamente. Para ejecutar scripts, debe establecer la política en RemoteSigned. Ejecute este comando para establecer la política de ejecución:

    Set-ExecutionPolicy RemoteSigned

    Considere ejecutar este cmdlet justo cuando empiece a configurar PowerShell para la gestión de Exchange Online y Microsoft 365. De lo contrario, sus posteriores intentos de ejecutar el comando Import-PSSession darán como resultado el siguiente error:

    Import-PSSession : Archivos no pueden ser cargados ya que ejecutar script ha sido deshabilitado en este sistema. Proporcione un certificado válido con el que firmar los archivos.

  3. En caso de que el sistema solicite confirmación, pulse Y para confirmar el cambio de política. Además, puede utilizar la política Sin restricciones con este cmdlet:

    Set-ExecutionPolicy Unrestricted

    Por defecto, el modo de la política de ejecución es Restringido.

  4. Debe crear un objeto de credenciales y proporcionar su nombre de usuario y contraseña de administrador en la ventana emergente para habilitar el acceso a Exchange Online. El usuario que obtiene acceso necesita permisos de administrador global de Microsoft 365.

    $Credential=Get-Credential

  5. A continuación, el sistema guarda las credenciales proporcionadas como la variable $Credential para utilizarla en el siguiente comando.
  6. Utilice el cmdlet New-PSSession para crear una sesión PowerShell remota. Ejecuta lo siguiente:

    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Credential -Authentication Basic -AllowRedirection

    Nota: En este cmdlet, establecemos la URL de destino del servidor de Exchange Online en la nube, que debe aceptar la solicitud. Después de ejecutar el comando, los servidores en la nube de Microsoft 365 le dan acceso al servidor virtual de Exchange Online asociado a su cuenta actual de Microsoft 365.

  7. Debe importar los cmdlets PowerShell de Exchange Online a la sesión actual. Este es el comando que hay que utilizar:

    Import-PSSession $Session

    Durante el proceso de importación, puede ver la barra de progreso.

  8. El siguiente mensaje aparece después de que el comando se haya completado con éxito:

    Comando completado con éxito

    NOTA: Con la MFA (autenticación multifactor) utilizada para una cuenta de Microsoft 365, los cmdlets estándar que hemos mencionado anteriormente no funcionarán. Para conectar PowerShell a Exchange Online con MFA activado, ejecute lo siguiente:

    Connect-EXOPSSession -UserPrincipalName YOUR_UPN

    En este cmdlet, YOUR_UPN representa el nombre de usuario principal, que es el nombre de la cuenta de Microsoft 365 que está utilizando. Puede que necesite instalar un módulo diferente aquí: Módulo PowerShell remoto de Exchange Online de Microsoft .

    Recuerde que este módulo puede ser un inconveniente para ejecutar scripts que consumen mucho tiempo porque la sesión termina después de una hora mientras lo está utilizando. Además, considere la posibilidad de utilizar direcciones IP de confianza (es decir, las direcciones IP de su organización). Esto puede ayudarle a eludir MFA cuando se conecte a Exchange Online PowerShell desde la red de su organización.

  9. Después de configurar la conexión a Microsoft 365 y Exchange Online, puede empezar a gestionar su entorno en la nube de Office 365. Puede ejecutar un cmdlet para comprobar si la conexión funciona. Por ejemplo, intente ver la lista de buzones disponibles con este comando:

    Get-Mailbox

    El siguiente cmdlet puede proporcionar la lista de comandos PowerShell de Exchange Online disponibles:

    Get-Command -Module tmp*

  10. Después de terminar su trabajo con Exchange, finalice la sesión. Esta práctica se recomienda tanto para la seguridad como para la optimización del rendimiento. Este es el cmdlet:

    Remove-PSSession $Session

    NOTA: No verá ningún mensaje después de ejecutar este comando. Para comprobar si la sesión se ha eliminado correctamente, puede utilizar el mismo comando Get-MailBox. Si se ha desconectado la sesión, aparecerá el error de que es imposible ejecutar los cmdlets de Exchange Online.

El número de sesiones que puedes abrir a la vez es limitado. Puede ejecutar tres sesiones simultáneamente y, si no desconecta ninguna de ellas, tendrá que esperar a que caduque la sesión antes de conectarse a Exchange Online PowerShell con una nueva sesión desde otra consola PowerShell.

Configuración automática

Además del enfoque manual, puede conectar PowerShell y Exchange Online mediante las funciones de automatización de PowerShell. La automatización reduce el número de comandos necesarios, lo que acelera el proceso de configuración.

Proceda como sigue:

  1. Descargue el guión. En nuestro ejemplo, el archivo de script se llama ConnectExchangeOnlinePowerShell.ps1
  2. Busque el archivo de script en el directorio después de la descarga. Tenemos el script en C:\temp_win\.
  3. Antes de ejecutar el script, establezca la política de ejecución de script en RemoteSigned mediante este cmdlet:

    Set-ExecutionPolicy RemoteSigned

    Esto permite evitar el siguiente error:

    El archivo C:\temp_win\ConnectExchangeOnlinePowerShell.ps1 no está firmado digitalmente. No puede ejecutar este script en el sistema actual.

    La política de ejecución de Bypass aplicada también permite evitar este problema. Este es el cmdlet necesario:

    Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass

  4. Confirme los cambios en la política de ejecución escribiendo Y.
  5. Ahora puede continuar con el script. Si MFA no está activado para su cuenta de Microsoft 365, la secuencia de comandos no requerirá argumentos adicionales:

    .\ConnectExchangeOnlinePowerShell.ps1

    Si MFA está activado en su entorno de Microsoft 365, utilice el siguiente comando:

    .\ConnectExchangeOnlinePowerShell.ps1 -MFA

  6. Después de establecer correctamente la conexión entre Exchange Online y PowerShell, puede empezar a utilizar cmdlets para gestionar cuentas de usuario, buzones, entre otros elementos, y flujos de trabajo. Por ejemplo, con este cmdlet puede obtener la lista de buzones de usuario disponibles:

    Get-Mailbox

    Además, puede utilizar el script para programar y automatizar aún más los flujos de trabajo. Por ejemplo, conectarse a Exchange Online sin proporcionar credenciales. El script permite añadir el login y la contraseña como opciones de ejecución:

    ./ConnectExchangeOnlinePowerShell.ps1 -UserName admin@your_domain.com -Password your_password

    Tenga en cuenta que proporcionar sus contraseñas como texto sin formato en la línea de comandos del script puede ser un problema de seguridad si se produce una violación de datos.

  7. La limitación de no más de tres sesiones en ejecución aún permanece, por lo que es posible que desee finalizar su sesión después de finalizar su trabajo con Exchange Online PowerShell. El cmdlet para terminar la sesión es el siguiente:

    ./ConnectExchangeOnlinePowerShell.ps1 -Disconnect

Cómo Gestionar Exchange Online mediante PowerShell en MacOS

Hay varias formas de instalar PowerShell en MacOS. El método más cómodo y sencillo es descargar el cliente directamente del sitio de Microsoft. PowerShell es compatible con las CPU Apple Silicon de la versión 7.2 o posterior.

Conservar los Mac ejecutando al menos macOS11 Big Sur. Después de instalar el paquete PowerShell en dicho dispositivo, utilice el método de configuración manual o automatizado que hemos descrito anteriormente para conectar su PowerShell a Exchange Online.

Uso de PowerShell con Exchange Online

Con los cmdlets de PowerShell, puede optimizar el tiempo y el esfuerzo dedicados a la gestión de Exchange Online.

Algunos de los cmdlets básicos tienen el siguiente aspecto:

  • New-Mailbox – para crear un nuevo buzón de usuario
  • Set-Mailbox – para ajustar los parámetros de un buzón existente
  • Get-Mailbox – mostrar información sobre los buzones disponibles en el entorno
  • Remove-Mailbox – eliminar un buzón de Exchange Online

Para ver la lista de cmdlets de PowerShell disponibles, utilice este comando:

Get-command -Module ExchangeOnlineManagement

Por último, consulte este ejemplo de script. El script permite obtener todos los buzones de Exchange Online:

#Import PowerShell module for Exchange Online
Import-Module ExchangeOnlineManagement

#Connect to Exchange Online
Connect-ExchangeOnline -Credential (Get-Credential) -ShowBanner:$False

#Get All Mailboxes
Get-EXOMailbox | Format-table UserPrincipalName,DisplayName

#Disconnect Exchange Online
Disconnect-ExchangeOnline -Confirm:$False

Conclusión

Conectar Exchange Online a PowerShell permite gestionar los buzones de Exchange de forma rápida y cómoda. Además, puede utilizar secuencias de comandos para automatizar acciones, cambios y ajustes para varias cuentas a la vez, lo que aumenta la eficacia operativa.

Dado que Microsoft no ofrece herramientas de backups nativas para Exchange Online, Microsoft Teams, OneDrive y SharePoint Online, asegúrese de utilizar una solución de backups dedicada para evitar la pérdida de datos en la nube. NAKIVO Backup & Replication es una solución universal de protección de datos que permite enviar backups de datos de Microsoft 365 a diferentes destinos de almacenamiento, incluyendo nubes públicas.

Try NAKIVO Backup & Replication

Try NAKIVO Backup & Replication

Get a free trial to explore all the solution’s data protection capabilities. 15 days for free. Zero feature or capacity limitations. No credit card required.

Artículos recomendados