Exchange Online es uno de los servicios más usados en Microsoft 365. Se puede usar cmdlets de PowerShell para administrar de forma eficaz las operaciones masivas y realizar tareas que no son posibles desde la interfaz administrativa basada en web. PowerShell de Exchange Online es un módulo que puede usar para administrar objetos relacionados con el correo en Exchange Online, como buzones, contactos y distribución.
1.-Instalación del módulo de PowerShell de Exchange Online
El módulo Exchange Online PowerShell se admite en Windows PowerShell 5.1 y PowerShell 7. Dado que se admite en PowerShell 7, se considera multiplataforma.
Para instalar el módulo de Exchange Online PowerShell (EXO V3)
Install-Module ExchangeOnlineManagement -Scope CurrentUser
Si el módulo ya está instalado para actualizar a la versión más reciente:
Update-Module ExchangeOnlineManagement
Para conectarse a Exchange Online
Connect-ExchangeOnline
Verificar la conexión
Get-EXOMailbox -ResultSize 5
Finalizar la sesión
Disconnect-ExchangeOnline -Confirm:$false
2.-Instalar Microsoft Graph
El SDK de PowerShell de Microsoft Graph se incluye en dos módulos, Microsoft.Graph y Microsoft.Graph.Beta, que se instalarán por separado. Estos módulos llaman a los puntos de conexión beta de Microsoft Graph v1.0 y Microsoft Graph, respectivamente.
Abra una ventana del símbolo del sistema Windows PowerShell. En función de los permisos de la cuenta que haya iniciado sesión, es posible que tenga que abrir la ventana de PowerShell en modo de administrador.
- Para instalar el módulo v1 del SDK en PowerShell Core o Windows PowerShell, ejecute el siguiente comando:
Install-Module Microsoft.Graph -Scope CurrentUser
- Ejecute este comando para instalar el módulo beta:
Install-Module Microsoft.Graph.Beta
- Una vez completada la instalación, puede comprobar la versión instalada con el siguiente comando:
Get-InstalledModule Microsoft.Graph
3.-Conectar a la suscripción de Microsoft 365
El SDK de PowerShell admite dos tipos de autenticación: acceso delegado y acceso de solo aplicación.
Cada API de Microsoft Graph está protegida por uno o varios ámbitos de permisos.
¿Qué significan estos permisos?
User.Read.All —> Delegado o Aplicación —> Leer información de todos los usuarios del directorio de Azure AD.
Group.ReadWrite.All —> Delegado o Aplicación —> Leer, crear, modificar y eliminar grupos y sus miembros.
Ambos requieren consentimiento de administrador, ya que acceden a datos sensibles.
Para conectarse a la organización de Microsoft 365, ejecute el siguiente comando:
Connect-MgGraph -Scopes «User.Read.All»,«Group.ReadWrite.All»
El símbolo del sistema le pide que vaya a una página web para iniciar sesión con las credenciales. Una vez hecho esto, el comando indica que se ha realizado correctamente con un mensaje Bienvenido a Microsoft Graph!.
4.- Mostrar los primeros 10 usuarios del directorio
Get-MgUser -Top 10
5.- Buscar por nombre parcial
Filtra todos los usuarios cuyo nombre contiene «Juan».
Get-MgUser | Where-Object { $_.DisplayName -like «*Juan*» }
6.- Filtrar usuarios sin ubicación
Mostrar todas las cuentas de usuario que tienen una ubicación no especificada. Escriba el siguiente comando y luego pulse Enter.
Get-MgUser | Where {$_.UsageLocation -eq $Null} | Select-Object DisplayName, UserPrincipalName, UsageLocation
ó
Get-MgUser -All | Where-Object { -not ($_.UsageLocation) } | Select-Object DisplayName, UserPrincipalName, UsageLocation
7.- Comprobar estado de bloqueo de una cuenta
Comprobar estado de bloqueo de una cuenta. Escriba el siguiente comando y luego pulse Enter. En este ejemplo se verifica la cuenta de Holly Dickson.
Get-MsolUser -UserPrincipalName Holly@xxxxx.onmicrosoft.com | Select DisplayName,BlockCredential
8.-Eliminar una cuenta de usuario
Cuando se elimina una cuenta de usuario mediante el módulo Microsoft Azure Active Directory para Windows PowerShell, la cuenta no se elimina de forma permanente. Puede restaurar la cuenta de usuario eliminada durante los siguientes 30 días. Escriba el siguiente comando y luego pulse Enter. Se elimina cuenta sin confirmar. En el ejemplo se elimina la cuenta de Holly Dickson.
Remove-MsolUser -UserPrincipalName Holly@xxxxxx.onmicrosoft.com -Force
9.- Restaurar una cuenta de usuario eliminada
Restaurar una cuenta de usuario eliminada dentro del periodo de 30 días. Escriba el siguiente comando y luego pulse Enter. En el ejemplo se restaura la cuenta de Holly Dickson.
Restore-MsolUser -UserPrincipalName Holly@xxxxxx.onmicrosoft.com

10.- Bloquear cuentas de usuario individuales
Bloquear cuentas de usuario individuales. Escriba el siguiente comando y luego pulse Enter. En el ejemplo se bloquea la cuenta de Holly Dickson.
Set-MsolUser -UserPrincipalName Holly@xxxxxx.onmicrosoft.com -BlockCredential $true
Comprobando estado de bloqueo del usuario Holly Dickson.
11.- Desbloquear cuentas de usuario individuales
Desbloquear cuentas de usuario individuales. Escriba el siguiente comando y luego pulse Enter. En el ejemplo se desbloquea la cuenta de Holly Dickson.
Set-MsolUser -UserPrincipalName Holly@xxxxxx.onmicrosoft.com -BlockCredential $false

Comprobando estado de desbloqueo de Holly Dickson.
12.- Bloquear varias cuentas de usuario
Para bloquear el acceso para varias cuentas de usuario. Cree un archivo de texto que contenga una cuenta en cada línea.
Ejemplo.
akol@contoso.com
tjohnston@contoso.com
kakers@contoso.com
Guardo el listado de usuarios como «Accounts.txt»
Escriba el siguiente comando y luego pulse Enter.
Get-Content «C:\Accounts.txt» | ForEach { Set-MsolUser -UserPrincipalName $_ -BlockCredential $true }
13.- Desbloquear varias cuentas de usuario
Para desbloquear las cuentas del listado, escriba el siguiente comando y pulse Enter.
Get-Content «C:\Accounts.txt» | ForEach { Set-MsolUser -UserPrincipalName $_ -BlockCredential $false }
14.- Obligar a un usuario a cambiar su contraseña
Obligar a un usuario a cambiar su contraseña. Escriba el siguiente comando y luego pulse Enter. En el ejemplo se cambia la contraseña de Sherri Harrell.
$userUPN = sherri@contoso.onmicrosoft.com
Set-MsolUserPassword -UserPrincipalName $userUPN -ForceChangePassword $true

Al iniciar sesión Sherri Harrell, obligado a cambiar la contraseña.

15.- Mostar la fecha del último cambio de contraseña de todos los usuarios y expotar a csv
Mostrar la fecha del ultimo cambio de contraseña de todos los usuarios y luego exportar a un fichero csv.
Get-MsolUser -All | select DisplayName,LastPasswordChangeTimeStamp | Export-CSV LastPasswordChangeDate.csv -NoTypeInformation
16.- Mostar la fecha del último cambio de contraseña de una cuenta especifica
Mostrar la fecha del ultimo cambio de contraseña de una cuenta especifica, en este caso de Maria Rubio.
- Crea un hash table con las opciones de Get-MgUser
$usuario = @{
UserId = «mrubio@xxxx.onmicrosoft.com»
Property = «DisplayName,lastPasswordChangeDateTime»
}
#Invocar Get-MgUser
Get-MgUser @usuario
Select-Object DisplayName, lastPasswordChangeDateTime














