PowerShell: obtener y exportar usuarios de Azure AD
En esta guía, aprenderá cómo usar PowerShell para obtener usuarios de Azure AD, todas las propiedades de los usuarios y exportarlos a un archivo CSV.
Como administrador, es posible que deba revisar una lista de usuarios de Azure AD y sus propiedades relacionadas. Esto puede resultar útil para una auditoría de seguridad, revisar las configuraciones de la cuenta o usarse más adelante en un script.
Para obtener una lista de usuarios de Azure, puede utilizar el comando Get-MgUser de PowerShell. Con este comando, puede obtener todas las cuentas de usuario de Azure, buscar cuentas específicas y mostrar todas las propiedades de usuario o específicas.
Importante
Microsoft retirará Azure AD Graph y MSonline API en cualquier momento después del 30 de junio de 2023. Esto incluye el cmdlet Get-AzureADUser que se ha utilizado durante años para conseguir usuarios de Azure con PowerShell.
Estas API se están reemplazando por la API de Microsoft Graph. Para esta guía, usaré el cmdlet Get-MgUser recientemente compatible para obtener usuarios de Azure AD. Consulte los anuncios de cambios de Microsoft Entra para obtener más detalles.
Empecemos.
Requisitos
Para seguir esta guía necesitará lo siguiente:
- PowerShell 5.1 o posterior instalado: cómo actualizar PowerShell
- Net Framework 4.7.2 o posterior instalado
- Módulo Microsoft Graph instalado: pasos a continuación
Cómo obtener propiedades de usuario de Azure AD con PowerShell
En este primer ejemplo, le mostraré cómo obtener una lista de todos los usuarios de Azure AD mediante el comando get-mguser.
Paso 1. Instale el SDK de Microsoft Graph PowerShell
Puede instalar el módulo Microsoft Graph para el usuario actual o para todos los usuarios.
Para instalar el módulo para el usuario actual, ejecute este comando.
Install-Module Microsoft.Graph -Scope CurrentUserPara instalar el módulo para todos los usuarios en su computadora.
Install-Module Microsoft.Graph -Scope AllUsersEn este ejemplo, instalaré el módulo para el usuario actual.
Es posible que se le indique que está instalando módulos desde un repositorio que no es de confianza.
Escriba y para instalar desde el repositorio que no es de confianza.
Debería ver que se instalan varios paquetes. Cuando se complete, debería volver al indicador de PowerShell.
Para verificar que el módulo gráfico esté instalado, ejecute el siguiente comando.
find-module microsoft.graphLa instalación está completa.
Paso 2. Conéctese a Microsoft Graph usando PowerShell
Antes de poder conseguir usuarios de Azure con PowerShell, primero debe conectarse con el parámetro -scope y los permisos correctos. Consulte el artículo de Microsoft Referencia de permisos de Microsoft Graph para ver todos los permisos.
El siguiente comando le permitirá leer el conjunto completo de propiedades del perfil de usuario de Azure.
Connect-MgGraph -Scopes "User.Read.All"Cuando ejecute el comando anterior, se le pedirá que inicie sesión.
Inicie sesión con su cuenta para completar la conexión a Microsoft Graph.
Paso 3. Utilice Get-MgUser para obtener usuarios de Azure AD
Si siguió los pasos 1 y 2, debería estar conectado a Microsoft Graph y no podrá ejecutar el cmdlet get-MgUser.
Para que todos los usuarios de Azure ejecuten este comando.
get-mguser -allEste comando devolverá las propiedades Id. de usuario, DisplayName, Mail y UserPrincipalName.
Para obtener un único usuario de Azure, utilice el parámetro -UserID.
get-mguser -UserID "robert@activedirectorypro.com"Ejemplos de Get-MgUser
A continuación se muestran algunos ejemplos más de cómo conseguir usuarios de Azure con el cmdlet Get-MGuser.
1. Busque usuarios específicos de Azure
En este ejemplo, usaré el parámetro -Filter para buscar usuarios con un nombre para mostrar específico.
Get-MgUser -Filter "startsWith(DisplayName, 'Robert')"2. Obtenga todos los usuarios de Azure habilitados
En este ejemplo, buscaré y solo obtendré los usuarios de Azure AD habilitados.
Get-MgUser -Filter 'accountEnabled eq true' -All -property AccountEnabled, DisplayName | select DisplayName, AccountEnabled3. Mostrar todas las propiedades del usuario de Azure
Para mostrar todas las propiedades de un usuario, utilice el parámetro fl.
get-mguser -UserID "robert@activedirectorypro.com" | flComo puede ver en la captura de pantalla anterior, la mayoría de las propiedades del usuario están en blanco. Esto es así por diseño, la mayoría de los atributos requieren que especifique qué datos de atributo mostrar. Consulte el siguiente ejemplo para obtener más detalles.
4. Mostrar propiedades de usuario específicas
Para mostrar propiedades de usuario que no se muestran de forma predeterminada, utilice el parámetro de selección.
En este ejemplo, mostraré la fecha y hora de creación del usuario.
get-mguser -UserID "robert@activedirectorypro.com" -Property CreatedDateTime | select CreatedDateTimeCuando utilice el parámetro de selección, deberá enumerar todas las propiedades que desee que se muestren. Aquí hay otro ejemplo que incluye el nombre para mostrar.
get-mguser -UserID "robert@activedirectorypro.com" -Property CreatedDateTime, displayname | select CreatedDateTime, displaynamePara ver qué atributos se muestran de forma predeterminada y cuáles requieren el uso de selección, consulte la tabla al final de esta publicación.
5. Buscar usuarios por departamento
En este ejemplo, buscaré todos los usuarios que están en el departamento "Contabilidad".
Get-MgUser -Filter "Department eq 'Accounting'"Para mostrar solo las propiedades DisplayName y Department, utilice este comando.
Get-MgUser -Filter "Department eq 'Accounting'" -property displayname, department | select displayname, department6. Ampliar las propiedades del usuario
Cuando muestre la lista completa de propiedades, notará que algunas dicen “Microsoft.Graph.PowerShell.Models“.
Algunas de estas propiedades se pueden ampliar fácilmente para ver los datos relacionados. El problema es que no todo se puede ampliar. Consulte el documento de tipo de recurso de usuario de Azure para obtener una lista completa de las propiedades que admiten la expansión.
Desplácese hacia abajo hasta Relaciones y busque las propiedades que dicen Soporta $expand.
En la captura de pantalla anterior, puede ver cómo se expanden los soportes de propiedad del administrador.
A continuación se muestra un ejemplo de cómo expandir la propiedad del administrador.
Get-MgUser -UserId anniesmith@activedirectorypro.com -ExpandProperty manager | Select @{Name = 'Manager'; Expression = {$_.Manager.AdditionalProperties.displayName}}7. Exportar usuarios de Azure a CSV
Para exportar usuarios de Azure a CSV, use el comando export-csv
get-mguser -UserID "robert@activedirectorypro.com" | export-csv c:\it\azure-1.csv -NoTypeInformation8. Obtener la fecha y hora de creación de todos los usuarios
En este ejemplo, mostraré el nombre para mostrar y la fecha y hora de creación de todos los usuarios.
get-mguser -all -Property displayName, CreatedDateTime | select displayName,CreatedDateTimeLista de propiedades de usuario de Azure
A continuación se muestra una lista de todas las propiedades de usuario devueltas por el cmdlet Get-MgUser; hay 125 en total.
Se devuelve solo en $select significa que debe usar el parámetro de selección seguido del nombre de la propiedad para que muestre los datos del usuario. Consulte el ejemplo 4 para obtener más detalles.
- aboutMe
Verdadero
- accountEnabled
Verdadero
- Activities
N/A
- ageGroup
Verdadero
- AgreementAcceptances
N/A
- AppRoleAssignments
N/A
- assignedLicences
Verdadero
- assignedPlans
Verdadero
- Authentication
- AuthorizationInfo
- birthday
Verdadero
- businessPhones
Falso: devuelve por defecto
- Calendar
- CalendarGroups
- CalendarView
- Calendars
- Chats
- city
Verdadero
- companyName
Verdadero
- consentProvidedForMinor
Verdadero
- ContactFolders
- Contacts
- county
Verdadero
- createdDateTime
Verdadero
- CreatedObjects
- creationType
Verdadero
- deletedDateTime
Verdadero
- department
Verdadero
- DeviceEnrollmentLimit
- DeviceManagementTroubleshootingEvents
- DirectReports
- displayName
Falso: devuelve por defecto
- Drive
- Drives
- employeeHireDate
Verdadero
- employeeLeaveDateTime
Falso: devuelve por defecto
- employeeId
Verdadero
- employeeOrgData
Verdadero
- employeeType
Verdadero
- Events
- Extensions
- externalUserState
Verdadero
- externalUserStateChangeDateTime
Verdadero
- faxNumber
Verdadero
- FollowedSites
- givenName
Falso: devuelve por defecto
- hireDate
Verdadero
- id
Falso: devuelve por defecto
- identities
Verdadero
- imAddresses
Verdadero
- InferenceClassification
- Insights
- interests
Verdadero
- isResourceAccount
N/A
- jobTitle
Falso: devuelto por defecto
- JoinedTeams
- lastPasswordChangeDateTime
Verdadero
- legalAgeGroupClassification
Verdadero
- licenseAssignmentStates
Verdadero
- LicenseDetails
Falso: devuelto por defecto
- MailFolders
- mailboxSettings
Verdadero
- mailNickname
Verdadero
- ManagedAppRegistrations
- ManagedDevices
- Manager
- MemberOf
- Messages
- mobilePhone
Falso: devuelto por defecto
- mySite
Verdadero
- mySiteOauth2PermissionGrants
- officeLocation
Falso: devuelto por defecto
- onPremisesDistinguishedName
Verdadero
- onPremisesDomainName
Verdadero
- onPremisesExtensionAttributes
Verdadero
- onPremisesImmutableId
Verdadero
- onPremisesLastSyncDateTime
Verdadero
- onPremisesProvisioningErrors
Verdadero
- onPremisesSamAccountName
Verdadero
- onPremisesSecurityIdentifier
Verdadero
- onPremisesSyncEnabled
Verdadero
- onPremisesUserPrincipalName
Verdadero
- Onenote
- OnlineMeetings
- otherMails
Verdadero
- Outlook
- OwnedDevices
- OwnedObjects
- passwordPolicies
Verdadero
- passwordProfile
Verdadero
- pastProjects
Verdadero
- People
- Photo
- Photos
- Planner
- postalCode
Verdadero
- preferredDataLocation
N/A
- preferredLanguage
Falso: devuelto por defecto
- preferredName
Verdadero
- Presence
- provisionedPlans
Verdadero
- proxyAddresses
Verdadero
- RegisteredDevices
- responsibilities
Verdadero
- schools
Verdadero
- ScopedRoleMemberOf
- securityIdentifier
Falso: devuelto por defecto
- Settings
- showInAddressList
N/A
- signInSessionsValidFromDateTime
Verdadero
- skills
Verdadero
- state
Verdadero
- streetAddress
Verdadero
- surname
Falso: devuelto por defecto
- Teamwork
- Todo
- TransitiveMemberOf
- usageLocation
Verdadero
- userPrincipalName
Falso: devuelto por defecto
- userType
Verdadero
- AdditionalProperties
Resumen
En esta guía, expliqué cómo hacer que los usuarios de Azure AD utilicen PowerShell. Debido a que Microsoft retiró el cmdlet Get-AzureADUser, me concentré en usar los comandos Get-MgUser PowerShell recientemente compatibles.
En mi opinión, Microsoft ha hecho que conseguir usuarios de Azure sea más complicado de lo que debería ser. Para obtener todas las propiedades del usuario, debe usar la opción de expandir y buscar los comandos relacionados para expandir ciertas propiedades. Quizás haya una buena razón para esto, no lo sé.
Además, poner fin al soporte y reemplazar los comandos hace que la situación sea aún más frustrante. Lástima que MS no mantuvo los cmdlets de Azure simples como los comandos get-aduser de PowerShell para ADDS locales.
Recursos
- Propiedades de usuario de Azure AD
- Referencia de permisos de Microsoft Graph













