Microsoft Graph PowerShell le permite administrar la configuración de Microsoft 365 desde la línea de comandos. Los módulos Azure AD, Azure AD Preview y MSOnline PowerShell están obsoletos. Microsoft Graph PowerShell es el módulo de PowerShell que se usa para interactuar con Microsoft Entra ID y otros servicios de Microsoft.
1.-Requisitos Previos
PowerShell 7 y versiones posteriores es la versión recomendada de PowerShell para su uso con el SDK de PowerShell de Microsoft Graph en todas las plataformas. No hay otros requisitos previos para usar el SDK con PowerShell 7 o posterior:
Los siguientes requisitos previos son necesarios para usar el SDK de PowerShell de Microsoft Graph con Windows PowerShell.
-
-
- Actualización a PowerShell 5.1 o posterior
- Instalar .NET Framework 4.7.2 o posterior
- Debe usar una versión de 64 bits de Windows.
- Actualizar PowerShellGet a la versión más reciente mediante Install-Module PowerShellGet
-
La directiva de ejecución de scripts de PowerShell debe establecerse en firma remota o menos restrictiva.
Para establecer la directiva de ejecución, ejecute:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser
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