En esta entrada voy a explicaros un par de formas de exportar a un fichero Excel los usuarios de Active Directory.
Exportación mediante el comando CSVDE
En primer lugar abriremos la consola de PowerShell en el servidor de dominio.
Exportar todos los usuarios
Para exportar todos los usuarios existentes en nuestro dominio con sus correspondientes atributos simplemente ejecutaremos el siguiente comando:
csvde -r "(objectclass=user)" -f c:/usuarios.csv
Exportar usuarios de una OU
Si en cambio queremos realizar la exportación pero de una OU concreta, en nuestro ejemplo los usuarios que se encuentren dentro de la OU Clientes, tendremos que ejecutar el siguiente comando:
CSVDE -d "OU=Clientes,DC=dominio,DC=com" -r objectClass=user -f c:/usuarios.csv
En el caso que queramos obtener los usuarios que se encuentran dentro de una OU que a su vez se encuentra dentro de otra, en nuestro ejemplo la OU principal sería Clientes y la OU secundaria sería Madrid, tendremos que utilizar el comando de la siguiente manera, es decir, igual que el ejemplo anterior pero montando los filtros de OU desde atrás hacia adelante.
CSVDE -d "OU=Madrid,OU=Clientes,DC=dominio,DC=com" -r objectClass=user -f c:/usuarios.csv
Exportación mediante el comando Get-ADUser
Abriremos la consola de PowerShell en el controlador de dominio.
Exportar todos los usuarios
Vamos a exportar todos los usuarios del dominio pero en esta ocasión sólo queremos que nos exporte a Excel una serie de atributos del usuario en concreto. Para nuestro ejemplo, exportaremos sólo los atributos (podremos definir los que necesitemos) Name, UserPrincipalName, Enabled, distinguishedName. Para ello ejecutaremos el siguiente comando en la consola de PowerShell:
Get-ADUser -Filter * -Properties Name,UserPrincipalName,Enabled,distinguishedName,LastLogon | Select-Object Name,UserPrincipalName,Enabled,distinguishedName,@{N='LastLogon'; E={[DateTime]::FromFileTime($_.LastLogon)}} | Export-CSV 'c:\Usuarios.csv'
Exportar usuarios de una OU
En el caso de querer obtener la misma información pero en este caso de una OU en concreto, para nuestro ejemplo será la OU Clientes, tendremos que ejecutar el comando de la siguiente forma:
Get-ADUser -Filter * -SearchBase "OU=Clientes,DC=dominio,DC=com" -Properties Name,UserPrincipalName,Enabled,distinguishedName | Select-Object Name,UserPrincipalName,Enabled,distinguishedName | Export-CSV 'c:\Usuarios.csv'
Si queremos rizar un poco más el rizo y queremos obtener los usuarios que se encuentran dentro de una OU que a su vez se encuentra dentro de otra tendremos que ir agregando las OU dentro del parámetro «SearchBase» de atrás hacia adelante. En nuestro ejemplo obtendremos los usuarios que se encuentran dentro de la OU Madrid que su vez se encuentra dentro de la OU Clientes.
Get-ADUser -Filter * -SearchBase "OU=Madrid,OU=Clientes,DC=dominio,DC=com" -Properties Name,UserPrincipalName,Enabled,distinguishedName | Select-Object Name,UserPrincipalName,Enabled,distinguishedName | Export-CSV 'c:\Usuarios.csv'
Exportar todos los usuarios excepto de una OU concreta
Si queremos obtener todos los usuarios de nuestro Active Directory excepto los que se encuentren dentro de una OU concreta, para nuestro ejemplo será la OU Clientes, tendremos que ejecutar el comando de la siguiente forma:
Get-ADUser -Filter * -Properties Name,UserPrincipalName,Enabled,distinguishedName | Select-Object Name,UserPrincipalName,Enabled,distinguishedName | where {$_.DistinguishedName -notlike “*OU=Clientes,DC=dominio,DC=com"} | Export-CSV 'c:\Usuarios.csv'
Y listo, con cualquiera de estos 2 métodos podréis sacar de una forma fácil y sencilla los usuarios de vuestro dominio.
Espero os haya servido de utilidad.
Entradas relacionadas
Me dedico a la Administración de Sistemas y he creado este blog para compartir mis conocimientos con toda la comunidad y así aportar mi granito de arena y ayudar a todo el que lo necesite.
hola, necesito exportar a excel los miembros de Todos los grupos del directorio activo, no de un grupo en especifico sino de todos. tengo el codigo de consulta y me los muestra en powers pero al exportarlo a excel no me los lleva. me podrias ayudar por favor? estoy apenas aprendiendo powershell
Hola Sandra,
Entiendo que lo que necesitas es obtener un listado de todos los usuarios existentes en Active Directory, si es así en la misma entrada lo tienes, concretamente, donde pone Exportar todos los usuarios. Tienes 2 métodos de hacerlo, mediante el comando CSVDE o el comando Get-ADUser.
No sé si esto te ayuda o no he comprendido bien tu problema.
Buena Sergio, para importar como seria, es decir exporto en excel todos los usuario luego quiero migrar a otro dominio
Hola Miguel,
El proceso de exportación es algo más complejo ya que hay que montar un script en PowerShell con bucles, etc…, no es una simple instrucción como la exportación.
Ahora mismo no lo tengo hecho pero me lo apunto para hacerlo en un futura entrada y compartirlo con todo aquel que le pueda ser de utilidad.
Saludos.
Hola Sergio Portillo por favor solicito tu ayuda; debo exportar los usuarios del AD pero debo excluir una OU especifica que es demasiado grande y no es necesaria.
Agradezco tu ayuda
Hola Luis,
Puedes utilizar el siguiente comando para hacer lo que necesitas:
Get-ADUser -Filter * -Properties Name,UserPrincipalName,Enabled,distinguishedName | Select-Object Name,UserPrincipalName,Enabled,distinguishedName | where {$_.DistinguishedName -notlike “*OU=LA QUE QUIERAS EXCLUIR,DC=dominio,DC=com»} | Export-CSV ‘c:\Prueba\Usuarios.csv’
Recuerda cambiar la parte de OU por el nombre de la que necesites excluir, el nombre del dominio y la ruta donde se exportará el fichero CSV.
Espero te sirva.
Saludos.
SUPER!!! Muchas Gracias Sergio Portillo funciono perfecto disculpa no haberte escrito antes, estoy muy agradecido Gracias nuevamente.
Buen día Sergio, agradezco la información que nos bridaste, me ha resultado de mucha utilidad. Muy bueno tu blog. Felicitaciones
Gracias Jose Manuel.
Saludos
Definitivamente tus aportes y ayudas están muy bien explicadas gracias por los ejercicios en powershell y tu blog me han servido muchísimo nuevamente Gracias Totales.
Hola Sergio, como poder exportar todos los usuarios y que me indique cuando sera su proximo cambio de password, necesito ese dato.
Gracias Amigo
Hola Edgardo,
No existe un atributo en Active Directory que te indique la fecha del próximo cambio de contraseña pero se me ocurre que en la consulta añadas el atributo pwdLastSet que te dará la fecha en la que se produjo el último cambio de contraseña de cada uno de los usuarios y luego en el Excel que se exporta puedes crear una columna calculada a la que le sumes el número de días que tengas configurado en tu Active Directory a la fecha del último cambio y así debería darte el dato que necesitas.
Espero te haya servido de ayuda.
Saludos.
Excelente tu aporte Sergio también lo tomaré en cuenta gracias!
Buen dia
Sergio por favor tu ayuda debo colocar un comentario a los objetos que se encuentran en el AD son aproximadamente 3.000 objetos en la pestaña de Telefonos en el campo de Notas: estuve buscando y encontre este script funciona pero me borra las notas anteriores.
¿Existe alguna manera de poder adicionar las notas, sin que me borre los primeros comentarios en el objeto?
SET-ADUSER prueba -replace @{info=»Prueba es temporal hasta 12(m)/20(d)/2020″}
Ejemplo:
Objeto prueba, pestaña de Telefonos, Campo Notas
Al ejecutarlo se borra las notas entre comillas.
Notas:
«Prueba se creo 09(m)/25(d)/2020»
Prueba es temporal hasta 12(m)/20(d)/2020
Agradezco valiosa ayuda Sergio portillo!!!
Hola Luis,
Prueba algo como esto.
Lo he hecho sobre la marcha pero no lo he podido probar porque ahora mismo no tengo un PC para hacerlo. Pruébalo y sino te funciona dímelo y te lo miro más tranquilamente.
Get-ADuser -Identity prueba -Properties info |
ForEach-Object{
$info = $_.Info
$_|Set-ADuser -Replace @{info=»$Info`nNuevo texto»}
}
Saludos.
Muchas Gracias Sergio Portillo funciona bien, lo raro es que el nuevo comentario no toma el nuevo renglon pero veo que si tiene el caracter especial `n deberia funcionar solo me da un espacio.
Prueba añadiendo el carácter especial ‘r. El script quedaría así:
Get-ADuser -Identity prueba -Properties info |
ForEach-Object{
$info = $_.Info
$_|Set-ADuser -Replace @{info=”$Info `r`nNuevo texto”}
}
Hola Sergio la verdad estoy muy agradecido por tus aportes para quienes tenemos dudas respecto a estos conocimientos, me han sido de gran ayuda muchas Gracias funciono perfecto bendiciones!
Hola Sergio, buenísimos tus aportes.
Tienes idea de cómo exportar el lastlogon de los usuarios que se conectan a través de AzureAD??? Necesito sacar esa información para un reporte y no he podido extraerla
Muchas gracias
Hola Daniel,
Desconozco cómo hacerlo, siento no poder ayudarte. A ver si alguna de las personas que lea el comentario sabe hacerlo y nos lo indica.
Saludos.
Hola Daniel yo necesito poder generar un csv que tenga todos los grupos de todo el AD y con los mismbros de los mismos y lo ideal seria que ese listado tambien tenga Tipo de grupo ( seguridad / distribucion ) y si es local/global/universal y ya que pido el campo DistinguishedName
Desde ya muchas Gracias Pablo
Hola Pablo,
Tengo una entrada con un script que hace algo parecido a lo que necesitas, échale un vistazo porque seguramente haciendo algunos pequeños cambios puedes conseguir lo que necesitas.
Este es el enlace a la entrada.
Saludos.
Hola Segio, te consulto, necesito exportar los usuarios con su respectivo nombre, si esta habilitado o deshabilitado y el mail que tiene asignado. Estuve usando este Script pero no se cual es la sintaxis para especificar el mail o como especificar la entrada.
Get-ADUser -Filter * -Properties Name,UserPrincipalName,Enabled,distinguishedName | Select-Object Name,UserPrincipalName,Enabled,distinguishedName | Export-CSV ‘c:\Usuarios.csv’
Como podria hacer para obtener el dato del mail? Gracias de antemano!
Hola Diego,
Prueba con lo siguiente:
Get-ADUser -Filter * -Properties Name,UserPrincipalName,Enabled,distinguishedName,mail | Select-Object Name,UserPrincipalName,Enabled,distinguishedName,mail | Export-CSV ‘c:\Usuarios.csv’
Saludos.
Pablo cual seria el script para exportar a un archivo csv solo los usuarios inactivos de todo el dominio exepto de una UO especifica?
Hola David,
Puede aplicar el filtro añadiendo los parámetros que necesites en el atributo -Filter o sino te quieres complicar mucho puedes exportar todos los usuarios con el siguiente comando y una vez lo tengas en Excel hacer un filtrado por columnas para quedarte con sólo aquellos datos que necesites.
Get-ADUser -Filter * -Properties Name,UserPrincipalName,Enabled,distinguishedName | Select-Object Name,UserPrincipalName,Enabled,distinguishedName | Export-CSV ‘c:\Usuarios.csv’
Saludos.
Saludos Sergio, felices fiestas.
A ver si me puedes orientar con lo siguiente, requiero buscar en una OU específica todos los usuarios que presenten inactividad de 60 días o más para poder generar un txt, tengo el siguiente código pero no logro que funcione luego del primer pipe
Import-Module activedirectory
get-aduser -Filter * -SearchBase «OU=RUTA USUARIO,DC=mi,DC=dominio,DC=com» | Search-ADAccount -AccountInactive -DateTime ((get-date).adddays(-60).ToString(‘dd/MM/yyyy’)) -UsersOnly | sort -property lastlogondate | ft samaccountname, lastlogondate, distinguishedname -AutoSize > E:\Script\Activos\Rpt_users_60_dias.txt
Agradeciéndote tu consejo
Hola Jorge,
Felices fiestas.
Prueba algo así a ver si te funciona y consigues lo que necesitas:
Search-ADAccount –AccountInActive –TimeSpan 60:00:00:00 –ResultPageSize 2000 –ResultSetSize $null | ?{$_.Enabled –eq $True} | Select-Object Name, SamAccountName, DistinguishedName | Export-CSV “C:\Temp\InActiveUsers.CSV” –NoTypeInformation
Saludos.
Sos un genio Sergio, me has ayudado mucho.
Sabes donde puedo conseguir una lista de todos los atributos que se pueden exportar?
Hola Daniel,
Puedes ver el nombre de los atributos en tu servidor de dominio, en la consola Usuarios y Equipos de Active Directory, cambia la vista a Características Avanzadas y simplemente da doble clic sobre algún usuario del dominio y si te diriges a la pestaña Editor de atributos ahí podrás ver el nombre de cada uno de los atributos.
Saludos.
Hola Sergio, necesito sacar un listado de todos los usuarios, la UO a la que pertenecen y los grupos a los que pertenecen.
Sabes como podria hacerlo?
Hola Andrés,
Me apunto tu petición para próximamente hacer una nueva entrada explicando como realizar lo que comentas.
Saludos.
Daniel gusto saludarte otra vez, se agradece tus tips de PS, te queria consultar sobre un PS para sacar usuarios deshabilitados pero desde un archivo .txt que yo tengo. que son mas menos 50 cuentas.
Hola Edgardo,
No entiendo muy bien que es lo que necesitas ya que me comentas que tienes los usuarios en un txt por lo que no sé que necesitas exportar exactamente.
Saludos.
Hola Sergio.
Una pregunta, es posible exportar los atributos de ciertos usuarios especificandos en un .csv, sin importar la OU en la que se encuentren? por ejemplo quiero exportar los atributos de 5 usuarios especificos pero todos se encuentran en OU diferentes. Si se puede hacer como seria la estructura del script? Agradezco tu ayuda
Hola Daniel,
Para conseguir lo que necesitas deberías utilizar el siguiente comando sustituyendo usuario1, usuarios2, etc… por el nombre de las cuentas de los usuarios.
Get-ADUser -Filter «samaccountname -eq ‘usuario1’ -or samaccountname -eq ‘usuario2’ -or samaccountname -eq ‘usuario3’ -or samaccountname -eq ‘usuario4’ -or samaccountname -eq ‘usuario5′» -Properties Name,UserPrincipalName,Enabled,distinguishedName | Select-Object Name,UserPrincipalName,Enabled,distinguishedName | Export-CSV ‘c:\Usuarios.csv’
Hola Sergio,
Necesito exportar de mi Active Directory la lista de usuario y el nombre de la computadora que utilizan. Sino se puede eso por lo menos que sea el ultimo equipo en el cual iniciaron sesion
Hola Edwin,
Con el script de la entrada no es posible hacerlo habría que ver como hacer algún tipo de script más complejo en el que vayas recorriendo los usuarios y consultando la información que necesitas pero ese script no lo he hecho nunca por lo que siento no poder ayudarte.
Saludos.
Que tal Sergio, buen aporte,
puedes apoyarme en indicarme que comando puedo usar para poder obtener la infomacion de la propiedad de «Member Of»-
la sintaxis que tengo es la siguiente:
Get-ADUser -Filter * -Properties Name,UserPrincipalName,Enabled,distinguishedName,MemberOf,mail | Select-Object Name,UserPrincipalName,Enabled,distinguishedName,MemberOf,mail | Export-CSV ‘c:\Usuarios1.csv’
Hola Hugo,
Con el comando Get-ADUser no vas a poder obtener esa información ya que el atributo <> es una lista y no contiene un único valor.
Para obtener esa información posiblemente pueda servirte esta entrada que escribí donde indico como obtener esa información.
Saludos.
Hola Sergio! veo que la tenes muy clara con estos temas.
Te consulto como podría hacer un script que copie el contenido del atributo ipPhone por cada usuario en el atributo telephoneNumber.
Muchas gracias.
Logrado !
$users=Get-ADUser -Filter * -Properties TelephoneNumber, ipphone, SamAccountName ## Los atributos que necesito de todos los users
ForEach ($user in $users) ## Por cada user en users tengo un objeto $user
{
if ($user.ipphone) { ## Si no es NULO reemplaza el dato de TELEPHONENUMBER con l oque tiene IPPHONE
Set-ADUser -Identity $user.SamAccountName -Replace @{telephonenumber=$user.ipphone}
}
}
Me alegro Leandro 💪
Gracias por compartir la solución, seguro que ayuda a mucha gente.
Saludos.
Estimado Sergio buen dia,
Talvez un script para poder exportar un csv solo con el nombre de usuario y los servicios de dominio asignados en la pestaña «miembros de»
Muchas gracias de antemano por tu respuesta
Hola Byron,
Me lo apunto para una futura entrada.
Saludos.
Buenas tardes Sergio, veo que eres un apersona que suma. Me encanta.
Yo estoy intentando sacar un listado del AD de todos los usuarios, pero quiero que en la info final aparezca el campo title y el campo description, pero no encuentro la manera de que me aparezcan más atributos que los «standard».
Gracias de antemano.
Hola Rubén,
¿Has probado a añadir las propiedades que necesitas al comando Get-ADUser?.
Saludos.
Hola Sergio, hay alguna posibilidad de obtener un listado del Active Directory con todos los usuarios y también todos los campos que tienen llenados, como por ejemplo, manager, info, addres, job title, departament, company, manager, etc, que incluya TODOS???
Hola Lucas,
¿Has probado con el siguiente comando a ver si te da la información que necesitas?
csvde -r «(objectclass=user)» -f c:/usuarios.csv
Saludos.
Hola sergio muchas gracias por responder me tira el siguiente error:
PS C:\WINDOWS\system32> csvde -r «(objectclass=user)» -f c:/s/usuarios.csv objectclass=user : El término ‘objectclass=user’ no se reconoce como nombre de un cmdlet, función, archivo de script o
programa ejecutable. Compruebe si escribió correctamente el nombre o, si incluyó una ruta de acceso, compruebe que
dicha ruta es correcta e inténtelo de nuevo.
En línea: 1 Carácter: 12
+ csvde -r «(objectclass=user)» -f c:/usuarios.csv
+ ~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (objectclass=user:String) [], CommandNotFoundException
+ FullyQualifiedErrorId : CommandNotFoundException
PS C:\WINDOWS\system32>
Hola Lucas,
Esta parte «(objectclass=user)» debe ir entre comillas dobles, así «(objectclass=user)».
Comprueba si fuera ese el problema.
Hola Sergio es posible exportar todo el listado de usuario del AD por fechas en específico???
Hola Eugenio,
¿A qué te refieres exactamente con exportar todos los usuarios por fechas? ¿a qué fechas te refieres?.
Saludos.
Hola Sergio,
Primero, te agradezco que hagas estos contenidos, sacan de apuros, dudas y aprendemos. Sigue así.
Ahora, Me interesa la pregunta, para especificar daré un ejemplo (para mi caso, por supuesto XD) Exportar los usuarios activos en Noviembre de 2021 y de otro mes.
Como lo puedo hacer.
Gracias de Antemano.
Hola Paolo,
Pues no hay un campo específico, o al menos que yo conozca, para ver que usuarios se encontraban activos en un mes concreto. Lo más parecido que se me ocurre es que filtres por un rango de fechas utilizando el campo lastLogon en el que se guarda la fecha y hora del último login. Se que esto no es exactamente lo que buscas ya que puede ser que el usuario se encuentre activo pero no se haya logado en el último mes por ejemplo pero es lo más parecido que se me ocurre a tu pregunta.
Si encuentras otra opción te agradecería lo compartieras con la comunidad.
Saludos.
Hola Sergio,
Gracias por tus aportes, necesito un listado de todos los usuarios del Active Directory, Pero adicionalmente quiero saber cada usuario a que grupo de AD pertenece. O no se si es posible descargar todos los usuarios y tener al lado el campo de grupos y de esa manera conocer todos los grupos que tiene asignado un usuario.
En teoría lo que ando buscando es ver los usuarios que tienen accesos a unos 120 grupos que hay creados, pero no quiero descargar los usuarios de cada grupo uno a uno.
Espero me puedas ayudar.
Hola Junior,
Para hacer lo que comentas hace falta elaborar un script mucho más complejo ya que no hay un comando de PowerShell que te de la información directamente como la necesitas.
Saludos.
Hola Ingeniero,
como puede exportar el listado de todos los equipos que se encuentran en el AD?, Gracias.
Hola Heiki,
Me apunto tu petición para intentar hacer en el futuro una entrada donde os dejé los comandos necesarios para exportar el listado de todos los equipos que se encuentren en el AD.
Saludos.
Buen día Sergio,
He visto todos los comentarios buscando un comando para exportar todo lo que tiene el AD, usuarios, equipos todo, y con todos los atributos que tienen llenos o vacios pero no lo encontre, me puedes ayudar por favor.
Hola Veroica,
No existe un único comando que te de toda la información que necesitas, para hacerlo tendrías que montar un script con varios comandos para conseguir toda esa información.
Saludos.
Hola Buen dia Sergio
Gusto saludarle.
Ayuda por favor, como obtener el listado de membresías/grupos que tiene un usuario en especifico y descargarlo en formato excel.
Muchas gracias
Saludos
Hola Stefanie,
Creo que en esta entrada puedes encontrar lo que necesitas.
Saludos.
Buenas tardes, requiero exportar los usuarios de un OU en específico por ejemplo:
El ou se llama usuarios de la empresa contoso, y de todos los usuarios de ese ou requiero saber también el contenido del extensionAttribute 1.
Agradezco su apoyo.
Hola Sebastian,
En la entrada explico como sacar la información de sólo una OU. Respecto al campo adicional que necesitas, sólo tienes que incluirlo en la consulta en la parte de Properties y también en la parte de Select-object.
Saludos.
Hola buenas tardes Sr. Sergio.
Ante todo muchas gracias por todo lo que hace, estoy aprendiendo de a poco y es de mucha utilidad la información que usted comparte. Si quisiera exportar a un excel todos los grupos de AD utilizando esta linea: Get-ADGroup -filter {groupCategory -eq’security’} | sort name | select name, GroupCategroy, GroupScope | Export-Csv C:\temp\GruposAD … no podria exportar porque aun sigo teniendo problemas de privilegio a pesar de ser admin de mi pc.
«Export-Csv : Acceso denegado a la ruta de acceso ‘C:\temp\GruposAD’.
En línea: 2 Carácter: 94
+ … Select name, GroupCategroy, GroupScope | Export-Csv C:\temp\GruposAD
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : OpenError: (:) [Export-Csv], UnauthorizedAccessException
+ FullyQualifiedErrorId : FileOpenFailure,Microsoft.PowerShell.Commands.ExportCsvCommand»
Podría usted ayudarme al respecto?
Muchas gracias
Saludos cordiales!
Hola xix,
¿Has probado a guardar el resultado en otra ruta distinta a la de C:\temp\GruposAD?. Otra cosa que puedes probar es abrir la consola de PowerShell como administrador, recuerda botón derecho abrir como administrador.
Saludos.
Hola Quetal Sergio, estuve revisando los aportes, quiza alguien me pueda ayudar, necesito: *exportar los usuarios de una OU, (usuario, email, ultima fecha de login)
*excluir los usuarios de que se encuentren dentro una OU que esta dentro de la anterior
de antemano agradezco la colaboración de todos
Hola Sergio, una vez exportados todos los usuarios y toda la información con el comando con el que abriste el post, como los importo al nuevo Servidor? WS2012 R2 o WS2019? Gracias por compartir tu conocimiento. Saludos. Héctor Ayala
Hola Héctor,
Échale un vistazo a la siguiente entrada en la que creo que explico lo que necesitas 😉
https://tutorialesit.com/importar-contactos-a-active-directory-desde-un-csv/
Saludos.