Búsqueda de sitios web

Cómo exportar usuarios de Active Directory a CSV y crear informes


Para muchos administradores de Active Directory (AD), recuperar usuarios de AD era un punto de entrada a PowerShell. PowerShell es una herramienta poderosa para interrogar sistemas y Active Directory no es una excepción. Buscar y devolver usuarios de AD con PowerShell es solo el comienzo. ¡Llevemos esto a un nivel superior y exportemos los usuarios de Active Directory a CSV!

En este tutorial, aprenderá cómo realizar algunas consultas AD básicas con PowerShell y crear informes útiles. Con PowerShell, aprenderá a formatear la salida cambiando el nombre de las columnas, fusionando campos de texto y realizando cálculos para desarrollar informes valiosos.

Requisitos previos

Este tutorial será una demostración práctica. Si desea seguirnos, asegúrese de tener lo siguiente:

  • Inició sesión en una computadora unida a AD con un usuario de dominio.
  • PowerShell: este tutorial utiliza PowerShell versión 7.1.4, pero cualquier versión de PowerShell debería funcionar.
  • Herramientas de administración remota del sistema de Windows (RSAT)

Cómo familiarizarse con el cmdlet de PowerShell Get-ADUser

Antes de crear informes, primero debe descubrir cómo encontrar los usuarios de AD que desea exportar a los usuarios de Active Directory a CSV. Para hacerlo, utilizará el cmdlet Get-ADUser. El cmdlet Get-ADUser es un cmdlet de PowerShell que viene con el módulo PowerShell ActiveDirectory.

Abra una consola de PowerShell y ejecute el cmdlet Get-ADUser usando el parámetro Filter y el argumento de *. El uso de un asterisco con el parámetro Filter le indica a Get-ADUser que devuelva todos los usuarios de AD. Crearás filtros más sofisticados un poco más adelante.

Get-ADUser -Filter *

De forma predeterminada, el cmdlet Get-ADUser devolverá las siguientes propiedades:

  • Nombre distinguido: el nombre LDAP completo del objeto de usuario.
  • Habilitado: ¿Está el usuario habilitado? Verdadero o falso.
  • GivenName: el nombre del usuario.
  • Nombre: el nombre completo del usuario.
  • ObjectClass: el tipo de objeto AD que es.
  • ObjectGUID: el ID del objeto AD.
  • SamAccountName: este era el nombre de inicio de sesión hasta Windows NT4.0
  • SID: otro tipo de ID de objeto.
  • Apellido: el apellido del usuario.
  • UserPrincipalName: el nombre de inicio de sesión del usuario.

En su informe, probablemente no necesite todas estas propiedades. De forma predeterminada, Get-ADUser también devuelve las cuentas de administrador e invitado del dominio integrado. Es casi seguro que quieras excluirlos. Aprenderá cómo hacerlo en las siguientes secciones.

Limitar las búsquedas a unidades organizativas con el parámetro SearchBase

Los usuarios de AD pueden estar distribuidos, a veces, en docenas de unidades organizativas (OU). A veces, es necesario limitar la búsqueda solo a una unidad organizativa concreta. Para hacer eso, puede usar el parámetro SearchBase. El parámetro SearchBase le permite especificar una única unidad organizativa como punto de partida para buscar usuarios.

Por ejemplo, quizás tenga una unidad organizativa de usuarios ATA con varias unidades organizativas de departamento en su interior, como se muestra a continuación. Dentro del departamento, las unidades organizativas contienen todas las cuentas de usuario que desea incluir en su exportación a CSV.

Puede definir el argumento SearchBase como el nombre distinguido (DN) de la OU de usuarios ATA como se muestra a continuación para limitar la búsqueda a la OU de usuarios ATA y todas las unidades organizativas internas.

Get-ADUser -Filter * -SearchBase "OU=ATA-Users,DC=ATA,DC=local"

El resultado anterior muestra muchas propiedades diferentes para cada usuario, pero lo limitaremos un poco solo para mostrar las propiedades que podrían interesarle. Para hacer esto, use el cmdlet Select-Object solo para devolver el Propiedades Name y UserPrincipalName.

Get-ADUser -Filter * -SearchBase "OU=ATA-Users,DC=ATA,DC=local" | select Name,UserPrincipalName

Quizás desee exportar únicamente los usuarios de Active Directory a CSV en la unidad organizativa de ventas. Para hacerlo, especifique la unidad organizativa Ventas en el parámetro SearchBase como se muestra a continuación.

Get-ADUser -Filter * -SearchBase "OU=Sales,OU=ATA-Users,DC=ATA,DC=local" | select Name,UserPrincipalName

Filtrado de cuentas de usuario de AD desde Get-ADUser

Hasta este punto, ha ignorado el parámetro Filter simplemente especificando un asterisco para devolver todos los usuarios. Pero si necesita consultar sólo a ciertos usuarios que coinciden con criterios específicos, el parámetro Filter es su amigo.

Supongamos que eventualmente desea exportar todos los usuarios de Active Directory a un CSV dentro de la unidad organizativa ATA-Users, pero solo si tienen su atributo AD Department establecido en Ventas. como la cuenta de usuario de ejemplo a continuación.

Usando el parámetro Filter en Get-ADUser, especifique el atributo AD (Department), el operador -eq equivale a “igual a” y el valor del atributo Department (Ventas).

Get-ADUser -Filter {Department -eq "Sales"} -SearchBase "OU=ATA-Users,DC=ATA,DC=local"| select Name,UserPrincipalName

Si tiene usuarios dentro de la unidad organizativa ATA-Users con el atributo Department establecido en Ventas, Get-ADUser solo devolverá esos usuarios.

Quizás desee incluir el atributo Department en la salida. Para hacerlo, normalmente especificaría la propiedad Department como otra propiedad para mostrar a través del cmdlet Select-Object (select), como se muestra. abajo. Pero observe que la propiedad Department no aparece.

De forma predeterminada, el cmdlet Get-ADUser no devuelve todas las propiedades. Para devolver todas las propiedades no predeterminadas, debe utilizar el parámetro Properties. En este caso, indique a Get-ADUser que devuelva la propiedad Department.

Get-ADUser -Filter {Department -eq "Sales"} -SearchBase "OU=ATA-Users,DC=ATA,DC=local" -Properties Department | select Name,UserPrincipalName

Ahora que tiene un filtro básico, puede continuar agregando más criterios al Filtro según sea necesario, combinándolos con PowerShell and y o. operadores. A continuación, por ejemplo, Get-ADUser devolverá todos los usuarios de AD habilitados que se encuentran en los departamentos Ventas o Finanzas.

En el entorno del tutorial, Steve James es una cuenta en el departamento Ventas, pero su cuenta no está habilitada, por lo que su cuenta no aparecerá mediante el comando anterior.

Exportación de usuarios de Active Directory a CSV

Ahora tiene los conocimientos básicos para recuperar usuarios de AD con PowerShell. El último paso es exportar esos usuarios de Active Directory a un archivo CSV para crear un informe que pueda compartir.

Digamos que ha creado su comando Get-ADUser y devuelve los usuarios que le gustaría incluir en su informe CSV como se muestra a continuación.

Este comando:

  1. Recupera todos los usuarios de AD en la unidad organizativa ATA-Users y todas las unidades organizativas secundarias.
  2. Genera propiedades adicionales como Department, PasswordLastSet y PasswordNeverExpires.
  3. Limita las propiedades devueltas a través de Select-Object para incluirlas en el informe como Name, UserPrincipalName, Department y cualquier propiedad que comienza con Contraseña.

Observe contraseña* en este ejemplo. El uso de un asterisco con Select-Object le indica a Select-Object que devuelva todas las propiedades que comienzan con contraseña.

Get-ADUser -Filter * -SearchBase "OU=ATA-Users,DC=ATA,DC=local"  -properties Department,PasswordLastSet,PasswordNeverExpires | Select-Object Name,UserPrincipalName,Department,password*

Para exportar los usuarios de Active Directory, este comando regresa a CSV y canaliza los objetos al cmdlet Export-Csv. El cmdlet Export-Csv es un cmdlet de PowerShell que le permite enviar varios objetos a (cuentas de usuario de AD en este ejemplo) y luego agregar esos objetos como filas CSV.

Para exportar cada usuario de AD devuelto en el comando anterior, agregue | Exportar-Csv .csv hasta el final. Esta acción canaliza todos los objetos que Select-Object devuelve y los "convierte" en un archivo CSV.

Get-ADUser -Filter * -SearchBase "OU=ATA-Users,DC=ATA,DC=local"  -properties Department,PasswordLastSet,PasswordNeverExpires | Select-Object Name,UserPrincipalName,Department,password* | Export-CSV pass_report.csv

Verá a continuación que Export-Csv crea un archivo CSV llamado pass_report.csv que incluye encabezados como nombres de propiedades de objetos y una fila por cuenta de usuario de AD.

Personalización de encabezados CSV con Select-Object

El informe que ahora puede generar contiene toda la información requerida, pero los encabezados CSV no son gramaticalmente correctos y pueden ser engañosos. Es posible que un administrador no sepa qué es un UserPrincipalName y tener encabezados de columna con varias palabras sin espacios es un buen inglés.

Para exportar los usuarios de Active Directory a CSV y crear encabezados CSV personalizados, utilice las propiedades calculadas del cmdlet Select-Object. La función de propiedades calculadas es una forma de definir nombres y valores de propiedades personalizados.

La función de propiedades calculadas del cmdlet Select-Object requiere que defina una tabla hash con dos pares clave/valor; Name para indicar el nombre de la propiedad y Expression para representar el código para manipular el valor de la propiedad del objeto original o simplemente el nombre real de la propiedad.

En este ejemplo, digamos que desea que el CSV muestre un nombre de encabezado de:

  • Nombre de inicio de sesión en lugar de UserPrincipalName
  • Fecha del último establecimiento de contraseña en lugar de ContraseñaLastSet
  • La contraseña nunca caduca en lugar de La contraseña nunca caduca
  • Fecha del último establecimiento de contraseña en lugar de ContraseñaLastSet que se representa con una fecha corta.

Para realizar estos cambios, primero debe crear una tabla hash para cada propiedad, como se muestra a continuación.

@{Name="Login Name";Expression="UserPrincipalName"}
@{Name="Password Last Set Date";Expression="PasswordLastSet"}
@{Name="Password Never Expires";Expression="PasswordNeverExpires"}
@{Name="Password Last Set Date";Expression={$_.PasswordLastSet.ToShortDateString()}}

Ahora que tiene las tablas hash, agréguelas a la lista de propiedades que proporciona al cmdlet Select-Object tal como lo haría con un nombre de propiedad típico.

El parámetro Property del cmdlet Select-Object acepta una matriz. Si tiene muchas propiedades para pasar, puede crear una matriz primero y luego pasar esa matriz al parámetro Property para facilitar la lectura.

$properties = @(
	Name,
	@{Name="Login Name";Expression="UserPrincipalName"},
	Department,
	@{Name="Password Last Set Date";Expression="PasswordLastSet"},
	@{Name="Password Never Expires";Expression="PasswordNeverExpires"},
	@{Name="Password Last Set Date";Expression={$_.PasswordLastSet.ToShortDateString()}}
)
Select-Object -Property $properties

Al combinar Get-ADUser con la nueva construcción Select-Object creada anteriormente, obtendrá el siguiente fragmento de código.

$properties = @(
	Name,
	@{Name="Login Name";Expression="UserPrincipalName"},
	Department,
	@{Name="Password Last Set Date";Expression="PasswordLastSet"},
	@{Name="Password Never Expires";Expression="PasswordNeverExpires"},
	@{Name="Password Last Set Date";Expression={$_.PasswordLastSet.ToShortDateString()}}
)
Get-ADUser -Filter * -SearchBase "OU=ATA-Users,DC=ATA,DC=local" -Properties Department,PasswordLastSet,PasswordNeverExpires | Select-Object -Property $properties | Export-CSV pass_report.csv

Una vez completado, PowerShell creará un archivo CSV similar al ejemplo siguiente.

Conclusión

PowerShell es una poderosa herramienta para generar informes sobre los usuarios de Active Directory. Este tutorial le mostró cómo buscar y filtrar usuarios según varios criterios y crear un archivo CSV a partir de esa salida usando solo unas pocas líneas de código.

Ahora que tiene los conocimientos básicos para consultar a los usuarios de AD y exportar usuarios de Active Directory a CSV, ¿dónde se ve utilizando este conocimiento en su vida laboral diaria?

Artículos relacionados