Conéctese a Exchange Online con PowerShell

Administrar Exchange Online con PowerShell hace que muchas tareas diarias sean mucho más fáciles (y rápidas).

No solo para sus tareas diarias, es posible que necesite PowerShell, sino que algunas configuraciones en Exchange Online solo se pueden cambiar con PowerShell. Entonces, ¿cómo se conecta a Exchange Online con PowerShell?

conectarse para intercambiar powershell en línea

La última versión de Módulo Powershell de Exchange Online, EXO V2, que vamos a utilizar es compatible con la autenticación moderna y funcionará con MFA.

Por lo tanto, ya no necesita crear una contraseña de aplicación.

Requisitos para EXO V2

El nuevo módulo Exchange Online PowerShell solo funciona en PowerShell 5.x y versiones anteriores. No funciona en Linux o Mac.

El soporte para PowerShell 6 y 7 está planificado, pero aún no se ha anunciado una fecha de lanzamiento.

Deberá configurar PowerShell para ejecutar scripts remotos. Por defecto, esto está desactivado.

  1. Abra PowerShell en un modo elevado
    Presione la tecla de Windows + X y elija Windows PowerShell (administrador)
  2. Establecer la política de ejecución a la firma remota:
Set-ExecutionPolicy RemoteSigned

Solo necesita configurar esto una vez por computadora. Si no ha configurado la política de ejecución e intenta conectarse a Exchange Online, obtendrá un error:

Los archivos no se pueden cargar porque la ejecución de scripts está deshabilitada en este sistema. Proporcionar un certificado válido con el que firmar los archivos.

Instale el módulo Exchange Online V2 en PowerShell

Necesitamos instalar el módulo EXO V2 en PowerShell antes de poder conectarnos a Exchange Online.

Vuelva a abrir una ventana elevada de Windows PowerShell:

  1. Abra PowerShell en un modo elevado
    Presione la tecla de Windows + X y elija Windows PowerShell (administrador)
  2. Instalar PowerShellObtener
    Necesitamos instalar PowerShellGet antes de poder instalar el módulo EXO V2.
# Close and re-open your PowerShell window when done
Install-Module -Name PowerShellGet -Force
  1. Instale el módulo EXO V2
    Ahora podemos instalar el módulo Exchange Online PowerShell más reciente con el cmdlet Install-Module
# Add -Force to it when you need to update EXO V1.
Install-Module -Name ExchangeOnlineManagement -Force

Comprueba automáticamente si el módulo EXO está instalado

¿Va a utilizar el módulo Exchange Online en un script? Luego, asegúrese de verificar automáticamente si el módulo está instalado antes de intentar conectarse.

Con el uso de un solo cmdlet, podemos enumerar todos los módulos instalados en PowerShell.

Puede evitar errores innecesarios simplemente verificando que el módulo ExchangeOnlineManagement está disponible.

(Get-Module -ListAvailable -Name ExchangeOnlineManagement) -ne $null

El cmd anterior debería devolver una lista de los módulos de Exchange Online instalados. Si el resultado está vacío, sabemos que el módulo no está instalado.

Conéctese a Exchange Online con PowerShell

Con el módulo Exchange Online instalado, ahora podemos conectarnos fácilmente a Exchange Online con un solo cmd en PowerShell:

Connect-ExchangeOnline -UserPrincipalName [email protected] -ShowProgress $true

El nuevo módulo EXO V2 también admite la conexión a otro inquilino. Si es un socio de Microsoft y necesita conectarse a otro inquilino, puede conectarse agregando el Organización Delegada cambiar.

Connect-ExchangeOnline -UserPrincipalName [email protected] -ShowProgress $true -DelegatedOrganization contoso.onmicrosoft.com

Conexión a la función Exchange Online para PowerShell

La función completa a continuación se puede usar en scripts para conectarse a Exchange Online. Esta función comprueba si el módulo de Exchange Online está instalado y cuándo da la opción de instalarlo automáticamente.

También comprueba las conexiones existentes de Exchange Online en PowerShell, lo que evita múltiples conexiones desde la misma sesión.

Function ConnectTo-EXO {
  <#
    .SYNOPSIS
        Connects to EXO when no connection exists. Checks for EXO v2 module
  #>
  param(
    [Parameter(
      Mandatory = $true
    )]
    [string]$adminUPN
  )
  
  process {
    # Check if EXO is installed and connect if no connection exists
    if ((Get-Module -ListAvailable -Name ExchangeOnlineManagement) -eq $null)
    {
      Write-Host "Exchange Online PowerShell v2 module is requied, do you want to install it?" -ForegroundColor Yellow
      
      $install = Read-Host Do you want to install module? [Y] Yes [N] No 
      if($install -match "[yY]") 
      { 
        Write-Host "Installing Exchange Online PowerShell v2 module" -ForegroundColor Cyan
        Install-Module ExchangeOnlineManagement -Repository PSGallery -AllowClobber -Force
      } 
      else
      {
	      Write-Error "Please install EXO v2 module."
      }
    }


    if ((Get-Module -ListAvailable -Name ExchangeOnlineManagement) -ne $null) 
    {
	    # Check if there is a active EXO sessions
	    $psSessions = Get-PSSession | Select-Object -Property State, Name
	    If (((@($psSessions) -like '@{State=Opened; Name=ExchangeOnlineInternalSession*').Count -gt 0) -ne $true) {
		    Connect-ExchangeOnline -UserPrincipalName $adminUPN
	    }
    }
    else{
      Write-Error "Please install EXO v2 module."
    }
  }
}

Conéctese a Exchange Online como administrador delegado (socio)

Cuando administra varios inquilinos, es posible que también deba conectarse a Exchange Online. En lugar de usar un inicio de sesión de administrador dedicado del arrendatario del cliente, también puede conectarse a Exchange Online como administrador delegado.

De esta manera, puede usar sus propias credenciales para autenticarse. Para hacer esto necesitarás usar el parámetro -DelegatedOrganization.

# Replace stonegrovebank.onmicrosoft.com with the organization that you want to manage
Connect-ExchangeOnline -DelegatedOrganization stonegrovebank.onmicrosoft.com

# Optional, you can specify your username as well
Connect-ExchangeOnline -UserPrincipalName [email protected] -DelegatedOrganization stonegrovebank.onmicrosoft.com

Ahora puede administrar todos los buzones de correo del inquilino asociado.

Conexión de Exchange Online a PowerShell sin autenticación moderna

Puede usar el siguiente método para conectarse a Exchange Online en PowerShell si su cuenta aún no es compatible con la autenticación moderna:

$cred = Get-Credential

Connect-ExchangeOnline -Credential $cred -ShowProgress $true

Comprobar si Exchange Online está conectado

Es una buena idea verificar si ya existe una conexión al usar el módulo Exchange Online en scripts. Tenga en cuenta que solo puede tener 5 conexiones simultáneas a Exchange Online. Y probablemente no quieras iniciar sesión si no es necesario.

conectar el intercambio en línea powershell

Las conexiones EXO se enumeran en las sesiones de PowerShell. Podemos obtener todas las sesiones con el cmdlet Get-PSSession.

Con el fragmento a continuación, puede verificar si hay una sesión activa de ExchangeOnline:

# Check if there is a active EXO sessions
$psSessions = Get-PSSession | Select-Object -Property State, Name
If (((@($psSessions) -like '@{State=Opened; Name=ExchangeOnlineInternalSession*').Count -gt 0) -ne $true) {
	Connect-ExchangeOnline -UserPrincipalName [email protected]
}

Obtener información del buzón

Con el nuevo módulo EXO V2, ahora puede obtener fácilmente los detalles del buzón con la siguiente forma abreviada:

# Old way:
Get-ExoMailbox -identity [email protected]

# With the EXO V2 module you can write the following shorthand
Get-ExoMailbox johndoe

Desconectar sus sesiones

Siempre asegúrese de desconectar su sesión de Exchange Online antes de cerrar su ventana de PowerShell.

Si no cierra la sesión, puede terminar usando las 5 conexiones remotas de PowerShell a Exchange Online.

Si eso sucede, deberá esperar a que caduquen las sesiones antes de poder volver a conectarse.

Disconnect-ExchangeOnline

Conexión de PowerShell a la alternativa en línea de Exchange

Si no puede usar el nuevo módulo EXO v2, porque está usando la autenticación básica, por ejemplo, aún puede conectarse a Exchange Online. Tenga en cuenta que esto finalmente se vuelve obsoleto, por lo tanto, cuando sea posible, use la opción de autenticación moderna descrita anteriormente.

Para el método de autenticación básico, vamos a importar los cmdlets de Exchange Online. Primero, asegúrese de haber configurado la política de ejecución en firma remota:

  1. Abra PowerShell en un modo elevado
    Presione la tecla de Windows + X y elija Windows PowerShell (administrador)
  2. Establecer la política de ejecución a la firma remota:
Set-ExecutionPolicy RemoteSigned
  1. Para conectarnos a Exchange Online primero necesitamos almacenar nuestras credenciales:
$cred = Get-Credential
  1. A continuación, podemos crear e importar el cmdlet de Exchange Online en PowerShell:
# Create the session
$Session = New-PSSession -ConfigurationName Microsoft.Exchange -ConnectionUri https://outlook.office365.com/powershell-liveid/ -Credential $cred -Authentication Basic -AllowRedirection

# Import it into your PowerShell session
Import-PSSession $Session -DisableNameChecking

Asegúrese de desconectar su sesión cuando haya terminado:

Remove-PSSession $Session

Preguntas frecuentes

Error: los archivos no se pueden cargar porque se están ejecutando scripts…

Si obtiene el error “Los archivos no se pueden cargar porque la ejecución de scripts está deshabilitada en este sistema. Proporcionar un certificado válido con el que firmar los archivos.” entonces se ha olvidado de establecer la política de ejecución.

Ejecute el siguiente cmd en una ventana de PowerShell elevada:
Set-ExecutionPolicy RemoteSigned

No se puede validar el argumento en el parámetro ‘Sesión’ – error

Está intentando conectarse a Exchange Online con una cuenta habilitada para MFA mientras usa la opción de autenticación básica.

Asegúrese de instalar el módulo en línea de Exchange más reciente, EXO V2, como se explica al principio del artículo.

No se pudo crear un espacio de ejecución porque excedió el número máximo de conexiones permitidas

Ha utilizado las 5 conexiones disponibles para Exchange Online. Asegúrese de desconectar sus sesiones de PowerShell.

Para cerrar las sesiones actuales, puede ejecutar el siguiente cmd:

Get-PSSession | Remove-PSSession

La conexión al servidor remoto Outlook.Office365.com falló con lo siguiente
mensaje de error: acceso denegado

Para conectarse a Exchange Online, deberá usar una cuenta que sea administrador global en Office 365. La cuenta con la que se está conectando no tiene los permisos correctos.

Terminando

El nuevo módulo Exchange Online es realmente poderoso y hace que trabajar con Exchange Online sea mucho más fácil.

Espero que este artículo te haya ayudado a empezar. Si tiene alguna pregunta, simplemente deje un comentario a continuación.

Otros artículos relacionados

GUI de PowerShell - Cómo empezar

GUI de PowerShell – Cómo empezar

He creado muchos scripts de PowerShell durante los últimos años. Todo con un solo propósito para automatizar mi trabajo de ...
Leer Más
PowerShell For Loop, ForEach y Do While/Hasta que se explique

PowerShell For Loop, ForEach y Do While/Hasta que se explique

Una de las funciones más fundamentales en la programación además de "If, Else" son los bucles. Le permiten procesar datos ...
Leer Más
Get-ADComputer- Cómo encontrar y exportar computadoras AD PowerShell

Get-ADComputer- Cómo encontrar y exportar computadoras AD PowerShell

¿Necesita exportar todas las computadoras desde una unidad organizativa o buscar una computadora en su Active Directory? ¿O quieres contar ...
Leer Más
Cómo usar PowerShell Reemplazar para reemplazar una cadena o un carácter

Cómo usar PowerShell Reemplazar para reemplazar una cadena o un carácter

¿Necesita reemplazar una cadena o un carácter en PowerShell? ¿O desea insertar bloques de texto completos en un archivo? Entonces ...
Leer Más
Cómo descargar un archivo con PowerShell

Cómo descargar un archivo con PowerShell

PowerShell es un excelente lenguaje de secuencias de comandos para escribir todo tipo de secuencias de comandos. Pero, ¿sabía que ...
Leer Más
PowerShell HashTable - Todo lo que necesitas saber

PowerShell HashTable – Todo lo que necesitas saber

Las tablas hash en PowerShell se pueden usar para almacenar información de manera estructurada. Esto se hace mediante el uso ...
Leer Más

Deja un comentario