M365PowerShell

Microsoft Graph PowerShell le permite administrar la configuración de Microsoft 365 desde la línea de comandos. Los módulos Azure ADAzure 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

  • Actualmente 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.

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