ExchangeM365PowerShell

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

La forma admitida y recomendada actualmente para administrar Exchange Online es mediante el módulo Exchange Online PowerShell V3 (EXO V3), correspondiente al módulo ExchangeOnlineManagement 3.x.

Connect-ExchangeOnline

Conexión a Microsoft 365 con PowerShell de Microsoft Graph

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

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!.

Microsoft Graph connect-
Microsoft Graph connect

4.- Mostrar los primeros 10 usuarios del directorio

Get-MgUser -Top 10

Get-MgUser -top 10

5.- Buscar por nombre parcial

Filtra todos los usuarios cuyo nombre contiene «Juan».
Get-MgUser | Where-Object { $_.DisplayName -like «*Juan*» }

Get-MgUser_Powershell

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

Get-MgUser_UsageLocation
Get-MgUser_UsageLocation_2

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

Get-MsolUser 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

Remove-MsolUser

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

Restore-MsolUser

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

Set-MsolUser BlockCredential

Comprobando estado de bloqueo del usuario Holly Dickson.

Get-MsolUser Blockcredential

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

Desbloquear cuentas de usuario

Comprobando estado de desbloqueo de Holly Dickson.

desbloqueo cuenta de usuario

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

ForceChangePassword

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

obligado a cambiar password

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