1.2K
En este artículo, le mostraremos cómo obtener información diversa sobre las cuentas de usuario de Microsoft 365 (ex Office 365) mediante el Cmdlet de PowerShell Get-MsolUser. El Get-MsolUser cmdlet le permite ver las propiedades de una o varias cuentas de Microsoft 365. Este es un análogo del Obtener ADUser cmdlet para Active Directory local, que se usa para obtener valores de atributos de usuario de AD. El Get-MsolUser cmdlet es parte del módulo Azure AD PowerShell (MSOnline). Le permite conectarse a su inquilino de Microsoft 365. Por lo tanto, para usar este cmdlet, primero debe descargar e instalar este módulo. Puede descargar e instalar MSOnline manualmente (instalador exe/msi) o instalarlo en línea desde la Galería de PowerShell. Para hacer esto, simplemente ejecute el comando en la consola de PoSh:
Find-Module -Name MSOnline | Install-Module -Force
Para verificar si el módulo MSOnline está instalado y mostrar su versión, ejecute el comando:
Get-Module msonline
Si desea actualizar la versión de un módulo, ejecute:
Update-Module –Name msonline
Para conectarse a una suscripción de Microsoft 365, guarde sus credenciales en una variable:
$MSOCred = Get-Credential
En la ventana que aparece, ingrese las credenciales de la cuenta con los permisos para conectarse a su inquilino de Microsoft 365.
Ahora conéctese a su suscripción con las credenciales guardadas:
Connect-MsolService -Credential $MSOCred
Pista. Confirme el inicio de sesión con su dispositivo si la autenticación multifactor (MFA) está habilitada para su cuenta de Azure.
Después de conectarse, ejecute el comando:
Get-MsolUser
Consejo. Si el módulo MSOnline no está instalado en la computadora, aparecerá un error al ejecutar el cmdlet Get-MsolUser:
Get-MsolUser: el término ‘Get-MsolUser’ no se reconoce como el nombre de un cmdlet, función, archivo de secuencia de comandos o programa ejecutable. Verifique la ortografía del nombre, o si se incluyó una ruta, verifique que la ruta sea correcta y vuelva a intentarlo.
+ Totalmente calificadoErrorId: CommandNotFoundException
Este comando devolverá una lista de todos los usuarios de Microsoft 365. De forma predeterminada, el cmdlet devuelve solo tres atributos de usuario de Azure:
- NombreprincipalUsuario;
- Nombre para mostrar;
- tiene licencia.
Para mostrar información sobre un usuario específico, puede especificar su UserPrincipalName. Puede mostrar todos los atributos de usuario:
Get-MsolUser -UserPrincipalName "youraccount@o365.onmicrosoft.com”| Select-Object *|Format-List
La cuenta de usuario contiene algunos atributos que determinan sus propiedades, parámetros e información personal (número de teléfono, departamento, empresa, etc.). Puede consultar Azure para valores de atributos específicos:
Get-MsolUser -UserPrincipalName “youraccount@o365.onmicrosoft.com” | Select-Object UserPrincipalName, DisplayName, Department, UsageLocation
Pista. Desafortunadamente, el cmdlet Get-MsolUser no le permite mostrar el valor del atributo personalizado sincronizado (atributo de extensión). Para obtener el valor de la propiedad de la extensión, use el cmdlet Get-AzureADUserExtension:
(Get-AzureADUserExtension -ObjectId youraccount@o365.onmicrosoft.com).extension_{AppClientId}_vehRegCode
Puede usar el cmdlet Where-Object estándar para buscar (filtrar) usuarios con valores específicos en los atributos de Azure AD. Por ejemplo, el siguiente comando mostrará una lista de todos los usuarios cuyo atributo Ciudad esté establecido en París:
Get-MsolUser | Where-Object {$_.City -eq "Paris"}
Puede exportar esta lista a un archivo CSV (conveniente para abrir en Excel):
Get-MsolUser | Select-Object UserPrincipalName, DisplayName, PhoneNumber, Department, UsageLocation| Export-CSV c:\ps\o365userlist.csv –NoTypeInformation
A continuación, se incluyen algunas consultas útiles para obtener datos sobre los usuarios de Microsoft 365 con la ayuda del cmdlet Get-MsolUser.
Puede visualizar todos los usuarios de un departamento específico:
Get-msoluser | Where {$_.Department -eq “Sales Dept”}
Vamos a desplegar la lista de usuarios y licencias asignadas a ellos:
Get-MsolUser | Where-Object {$_.isLicensed -like "True"} | FT DisplayName, licenses, islicensed
Lista de opciones de licencia asignadas:
(Get-MsolUser –UserPrincipalName youraccount@o365.onmicrosoft.com ).Licenses[0].ServiceStatus
Lista de usuarios sin licencia:
Get-MsolUser –UnlicensedUsersOnly
Lista de cuentas eliminadas (útil si eliminó accidentalmente una cuenta de Office 365, cuando necesita restaurarla con urgencia):
Get-MsolUser -ReturnDeletedUsers | FL UserPrincipalName,ObjectID
Indique la hora del último cambio de contraseña para los usuarios de Office 365:
Get-MsolUser -All | select DisplayName, LastPasswordChangeTimeStamp
Enumere las cuentas activas (habilitadas):
Get-MsolUser -EnabledFilter EnabledOnly -ALL
Enumere las cuentas deshabilitadas:
Get-MsolUser -EnabledFilter DisabledOnly –ALL
Si no conoce el UPN exacto de un usuario o su ObjectID, puede encontrar usuarios usando el -Cadena de búsqueda parámetro. Cuando usa este parámetro, el cmdlet Get-MsolUser busca coincidencias en los atributos Nombre para mostrar y Dirección de correo electrónico. Por ejemplo, el siguiente comando mostrará una lista de todos los usuarios habilitados con el apellido Gupta:
Get-MsolUser -EnabledFilter EnabledOnly -ALL -SearchString "Gupta"
Para enumerar los usuarios de inquilinos de Azure que no se han sincronizado desde los Servicios de dominio de Active Directory locales (usuarios de la nube) a través de Azure Active Directory Sync (Azure AD Connect):
Get-MsolUser -All -Synchronized:$false
Con un script de PowerShell, puede verificar si el usuario es nativo de la nube o está sincronizado desde AD local:
$upn = “youraccount@o365.onmicrosoft.com” if( [bool](Get-MsolUser -Synchronized).UserPrincipalName -contains $upn) { Write-Host -foregroundcolor Green $upn " is on-prem Synchronized User" } else { Write-Host -foregroundcolor Red $upn " is NOT Synchronized User (cloud only user)" }
Mostrar una lista de usuarios que no han cambiado sus contraseñas durante más de 90 días:
Get-MsolUser | Where-Object { $.LastPasswordChangeTimestamp -lt (Get-Date).AddDays(-90)} | Select-Object DisplayName,UserPrincipalName,LastPasswordChangeTimestamp,Licenses,PasswordNeverExpires | Format-Table
De forma predeterminada, el comando Get-MsolUser devuelve solo 500 entradas. Si desea aumentar la cantidad de cuentas de usuario disponibles en los resultados del comando a 3000, agregue el parámetro -MaxResults 3000:
Get-MsolUser -EnabledFilter EnabledOnly -MaxResults 3000