Cómo conectar los servicios de Office 365 Exchange Online a PowerShell

La mayoría de las veces, Microsoft Office 365 y todas las aplicaciones incluidas se gestionan a través de un navegador web en una interfaz gráfica de usuario. Básicamente, se utilizan las interfaces web del Centro de administración de Office 365 y del Centro de administración de Exchange. Sin embargo, puede que necesite utilizar la interfaz de línea de comandos (CLI) para realizar acciones masivas que se apliquen a cientos de cuentas de usuario. Además, es posible que desee utilizar los cmdlets de Exchange Online, que no están disponibles en el Centro de administración.

Muchos administradores utilizan PowerShell (proporcionado por Microsoft) para gestionar Microsoft Exchange Server en la interfaz de línea de comandos. Sin embargo, estos comandos estándar para entornos Exchange Server locales no funcionan para Exchange Online que se ejecuta en la nube de Microsoft 365. Para utilizar Powershell con Office 365, debe instalar módulos especiales de PowerShell para conectarse a Office 365. Lea este post para conocer los diferentes métodos para conectarse a Exchange Online PowerShell.

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.

Requisitos

Existen algunos requisitos que deben cumplirse para conectarse a Exchange Online PowerShell.

  • Debe utilizar PowerShell en Windows 7 SP1, o versiones más recientes de Windows de escritorio y Windows Server 2008 R2 SP1, o versiones más recientes de Windows de servidor. Tenga en cuenta que debe instalar .NET Framework 4.5 o posterior además de instalar una versión actualizada de Windows Management Framework 3.0, 4.0 o 5.1.
  • Se requiere conexión a Internet. El puerto TCP 80 debe estar abierto para conectarse desde su máquina local al host de destino.
  • El acceso a PowerShell de Exchange Online debe estar habilitado para el usuario actual (por defecto, dicho acceso está habilitado para los administradores).

Puede habilitar manualmente el acceso para conectarse a Exchange Online PowerShell para el usuario en particular con el comando:

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

Principio de funcionamiento

Puede conectarse a Exchange Online PowerShell, pero este proceso es más complicado que utilizar PowerShell para administrar un Exchange Server local. Sin embargo, puede utilizar la consola PowerShell integrada para gestionar infraestructuras de nube remotas. En este caso, la consola se denomina PowerShell remoto o PowerShell Remoting. El proceso de iniciar una sesión remota de PowerShell para Office 365 y Exchange Online es ligeramente diferente. Debe descargar e instalar componentes especiales antes de poder abrir una sesión remota de Office 365. Afortunadamente, los cmdlets necesarios para iniciar una PowerShell remota de Exchange Online se descargan automáticamente al crear una sesión PowerShell remota. Se utilizan diferentes conjuntos de cmdlets de PowerShell para administrar Microsoft Office 365 y Microsoft Exchange Online.

La razón principal para conectarse a Microsoft Exchange Online en PowerShell es la siguiente:

  • Creación de una sesión remota a Exchange Online en PowerShell abierta en su máquina local.
  • Proporcionar ajustes de conexión, pasando la autenticación.
  • Importación de los cmdlets de PowerShell necesarios para gestionar Exchange Online de forma remota.

En la entrada de blog de hoy, ejecutaremos cmdlets de PowerShell en Windows 10.

Configuración manual

Repasemos primero el método manual, para entender mejor el principio de configuración.

  1. Abra Windows PowerShell. Puede hacerlo con al menos dos métodos.
    1. Haga clic en Inicio, escriba cmd, haga clic con el botón derecho en el elemento Símbolo del sistema y seleccione Ejecutar como administrador en el menú contextual.
    2. Vaya a Inicio > Windows PowerShell. Haga clic con el botón derecho en Windows PowerShell y pulse Ejecutar como administrador para asegurarse de que puede ejecutar comandos PowerShell sin restricciones.
  2. Habilitar la ejecución de scripts (es mejor ejecutar este comando al principio de la preparación de PowerShell para administrar Exchange Online y Office 365), de lo contrario obtendrá el error en el futuro al ejecutar el comando Import-PSSession:
    Import-PSSession : Los archivos no se pueden cargar ya que la ejecución de scripts se ha deshabilitado en este sistema. Proporcione un certificado válido con el que firmar los archivos.
  3. Para ejecutar scripts, la política de ejecución debe estar configurada como RemoteSigned.
    Set-ExecutionPolicy RemoteSigned
  4. Pulse Y para confirmar el cambio de política si se le solicita. También puede utilizar el comando Set-ExecutionPolicy Unrestricted para utilizar la política Unrestricted.Por defecto, el modo de política de ejecución es Restricted.Cambiar la política de ejecución antes de conectarse a Exchange Online PowerShell
  5. Ejecute el comando en PowerShell para obtener las credenciales e introduzca su nombre de usuario/contraseña de administrador en la ventana emergente para acceder a Exchange Online. El usuario debe tener permisos administrativos globales en Office 365.
    $Credential=Obtener credencialesHow to connect to Office 365 PowerShell – saving credentials as the variable
    Las credenciales introducidas se guardarán en la variable y se utilizarán en el siguiente comando como $Credential.
  6. Hay que crear una sesión remota PowerShell con el cmdlet New-PSSession y ejecutando el siguiente comando:
    $Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $Credential -Authentication Basic -AllowRedirectionNótese que en este comando se establece la URL de destino del servidor Exchange Online que se ejecuta en la nube y que debe aceptar la petición. Después de ejecutar el comando, los servidores en la nube de Microsoft Office 365 le proporcionarán acceso al servidor virtual de Exchange Online correspondiente asociado a su cuenta.Cómo conectarse a Exchange Online PowerShell: creación de una nueva sesión remota
  7. Los cmdlets PowerShell de Exchange Online deben importarse a la sesión actual con el comando
    Import-PSSession $Session
  8. Puedes ver la barra de progreso mientras recibes los comandos.Cómo conectarse a Exchange Online PowerShell: importación de cmdlets de Exchange Online a la sesión actual
  9. Después de ejecutar correctamente el comando, verá el siguiente mensaje.How to connect to Exchange Online PowerShell – Exchange Online cmdlets have been imported successfully
    Nota:
    Si utiliza la MFA para su cuenta, los cmdlets estándar explicados anteriormente no funcionarán. Si desea conectar Exchange Online en PowerShell utilizando MFA, ejecute el siguiente comando:
    Connect-EXOPSSession -UserPrincipalName YOUR_UPNWhere YOUR_UPN (nombre de principio de usuario) es el nombre de la cuenta de Office 365 que está utilizando.Es posible que necesite instalar el módulo de PowerShell remoto de Exchange Online de Microsoft . Tenga en cuenta que cuando se utiliza este módulo, la sesión termina después de una hora, lo que puede ser un inconveniente para la ejecución de scripts largos. Considere la posibilidad de utilizar direcciones IP de confianza (es decir, las direcciones IP de su organización) para eludir MFA al conectarse desde la red de su empresa a Exchange Online PowerShell.MFA (Multi-Factor-Authentication) es el método avanzado de autenticación que añade una segunda capa de seguridad. Tras introducir la contraseña, se envía el código de confirmación al teléfono móvil del usuario, que debe introducirlo para verificar la cuenta y obtener acceso a los servicios en la nube de Office 365.
  10. Una vez que te hayas conectado a Office 365 y Exchange Online, podrás administrar tu entorno en la nube de Office 365. Vamos a comprobar que nos hemos conectado correctamente a Exchange Online y a listar los buzones de los usuarios, por ejemplo.
    Obtener buzón de correoExchange Online PowerShell – checking mailboxes of users
    Puede obtener una lista de todos los cmdlets disponibles para Exchange Online PowerShell con el siguiente comando:
    Get-Command -Module tmp*Los nombres de los cmdlets de Exchange Online PowerShell no se convierten.
  11. Cuando finalice su trabajo con Exchange 365, desconecte la sesión. Esta es la práctica recomendada.
    Remove-PSSession $SessionUnfortunately, no se muestra ningún mensaje después de ejecutar este comando. Puede comprobar si la sesión está desconectada ejecutando el comando Get-MailBox. Si se desconecta la sesión, aparecerá el error que explica que no se pueden ejecutar los cmdlets de Exchange Online después de la desconexión.

¿Por qué hay que desconectar la sesión? Pues sencillamente porque el número de sesiones concurrentes activas que pueden abrirse simultáneamente está limitado a tres. Si abre tres sesiones de PowerShell de Exchange Online a la vez y no desconecta ninguna de ellas cuando no las esté utilizando, tendrá que esperar a que caduque una de estas sesiones para poder volver a conectarse a PowerShell de Exchange Online desde una nueva consola de PowerShell.

Configuración automatizada

Ahora que conoce el principio de cómo conectarse a Exchange Online PowerShell manualmente, puede utilizar el método automatizado. La ventaja de este método es el menor número de comandos que debe introducir.

  1. Descargue el script del sitio web de Microsoft. En este caso, el nombre del archivo de script es ConnectExchangeOnlinePowerShell.ps1.
  2. Vaya al directorio donde se encuentra el script; en nuestro ejemplo, el script se guarda en C:\temp_win\.
  3. Antes de ejecutar el script, edite la política de ejecución del script (de forma similar a lo que se muestra en el primer método), de lo contrario obtendrá el error:
    El archivo C:\temp_win\ConnectExchangeOnlinePowerShell.ps1 no está firmado digitalmente. Puede aplicar la política de ejecución Bypass para evitar este problema:Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass
  4. Escriba Y para confirmar el cambio de política de ejecución.Conectarse a Exchange Online PowerShell mediante un script PowerShell
  5. Después de eso, puede ejecutar el script. Si no utiliza MFA, ejecute el script sin argumentos adicionales:
    .\ConnectExchangeOnlinePowerShell.ps1Si en su entorno de Office 365 se utiliza MFA (autenticación multifactor), pruebe con el comando:.\ConnectExchangeOnlinePowerShell.ps1 -MFA
  6. Ahora que se ha conectado correctamente a Exchange Online, puede gestionar sus cuentas de usuario, sus buzones, etc. Por ejemplo, puede listar los buzones de sus usuarios:
    Get-MailboxExchange Online PowerShell is now connected – checking mailboxes
    Este script puede utilizarse para programar y automatizar tareas. Por ejemplo, puede conectarse a Exchange Online sin introducir credenciales en la ventana interactiva, como se muestra arriba. Puede introducir su nombre de usuario y contraseña en la línea de comandos como opciones de comando al ejecutar el script:
    ./ConnectExchangeOnlinePowerShell.ps1 -UserName admin@your_domain.com -Password your_passwordTenga en cuenta que la introducción de contraseñas como texto sin formato en la línea de comandos puede no ser segura.
  7. Cuando termine de trabajar con Exchange Online en PowerShell, no olvide finalizar la sesión:
    ./ConnectExchangeOnlinePowerShell.ps1 -Disconnect

Método alternativo

Consideremos un método más que se puede utilizar para conectarse a Exchange Online PowerShell. Este método puede considerarse una modificación del primero.

  1. Crear un nuevo perfil para PowerShell con la función:
    Nuevo-elemento -tipo archivo -fuerza $profile
  2. Edite el archivo de configuración del perfil en el editor de texto para añadir la función Connect-EXOnline:
    notepad $profile
  3. Añada el siguiente contenido al archivo de configuración del perfil PowerShell y cambie username@domain.com por el nombre de su cuenta; a continuación, guarde el archivo de texto.
    Funciones Connect-EXOnline{
    $credentials = Get-Credential -Credential username@domain.com
    Write-Output "Getting the Exchange Online cmdlets"
    $Session = New-PSSession -ConnectionUri https://outlook.office365.com/powershell-liveid/ `
    -ConfigurationName Microsoft.Exchange -Credential $credentials `
    -Authentication Basic -AllowRedirection
    Import-PSSession $Session
    }
  4. Cierre la ventana actual de PowerShell y abra una nueva ventana de PowerShell como Administrador. Ejecute el comando para conectarse a Exchange Online PowerShell:
    Connect-ExOnlineIntroduzca su contraseña en la ventana emergente.Conexión PowerShell a Exchange Online
  5. Cuando haya terminado de trabajar con Exchange Online PowerShell, finalice la sesión con el comando
    Get-PSSession | Remove-PSSession

Conclusión

Exchange Online PowerShell es una buena alternativa a la interfaz web del Centro de administración de Exchange. Con Office 365 PowerShell y Exchange Online PowerShell, puede realizar operaciones y acciones masivas con varios objetos mediante un único comando o secuencia de comandos. La entrada de blog de hoy ha cubierto cómo conectarse a Exchange Online PowerShell utilizando tres métodos, uno de los cuales es automatizado. El principio de funcionamiento de cada método es similar y consta de tres pasos principales: crear una sesión PowerShell remota, autenticarse e importar los cmdlets PowerShell de Exchange Online.

Una recomendación importante es que desconecte la sesión remota de PowerShell cuando termine de trabajar con Exchange Online PowerShell para evitar una situación en la que todas las sesiones estén ocupadas y no sea posible abrir una nueva sesión remota de Exchange Online PowerShell. Tener Exchange Server en la nube es una solución fiable, pero incluso en este caso, se recomienda hacer un backup de su servidor Exchange para proteger sus datos contra el borrado accidental y otros desastres.

1 Year of Free Data Protection: NAKIVO Backup & Replication

1 Year of Free Data Protection: NAKIVO Backup & Replication

Deploy in 2 minutes and protect virtual, cloud, physical and SaaS data. Backup, replication, instant recovery options.

Artículos recomendados