Buscar

Active Directory: Mostrar todas las propiedades de un usuario con PowerShell

Con el siguiente cmd-let podemos ver todas las propiedades de un usuario (Xavi) de Active Directory:

Get-AdUser Xavi -Properties *|more

Ejemplo de ejecución sobre un DC con Windows Server 2012:

Active Directory: Mostrar todas las propiedades de un usuario con PowerShell


Siguiente página:

Active Directory: Mostrar todas las propiedades de un usuario con PowerShell

Siguiente página:

Active Directory: Mostrar todas las propiedades de un usuario con PowerShell

Con todas las propiedades podemos realizar filtros.

Algunos ejemplos:

1) Teléfono de la oficina del usuario Xavi.

Get-AdUser Xavi -Properties OfficePhone

2) Teléfono de la oficina y código postal de todos los usuarios.

Get-AdUser -Filter * -Properties OfficePhone, PostalCode

Si vais a utilizar tuberías (pipes) entre distintos cmd-lets, os recomiendo una lectura del siguiente post:

Windows: Powershell propiedad calculada (SYSADMIT.com)

49 comentarios:

  1. Hola Buenas Tarde,

    Este Script me lista los usuario y sus propiedades, pero necesito tambien por cada usuario se muestre el grupo al que perteneces
    Con lo que expongo a continuación es lo que quiero obtener;
    SamAccountName DisplayName Status (enable) LastLoginDate WhenCreated MemberOf
    Pperez Pedro I. Perez E. True 24/10/2016 15/01/2016 Domain Admin
    Pperez Pedro I. Perez E. True 24/10/2016 15/01/2016 Administrators
    Pperez Pedro I. Perez E. True 24/10/2016 15/01/2016 Remote Control
    )
    JCSuarez Julio Cesar Suarez False 2/12/2013 15/01/2010 Domain Admin
    JCSuarez Julio Cesar Suarez False 2/12/2013 15/01/2010 Administrators
    JCSuarez Julio Cesar Suarez False 2/12/2013 15/01/2010 Remote Control

    Con este resultado sabre quien esta activo quien no y a que grupo pertenece, que es lo mas importante

    Agradezco de antemano de tu gran apoyo

    Saludos

    ResponderEliminar
  2. Hola,

    Si quieres saber si un usuario pertenece a un grupo de seguridad o no, aquí tienes otro método para controlarlo:

    http://www.sysadmit.com/2013/11/script-para-realizar-mapa-de-red-segun.html

    Un saludo,

    Xavi.

    ResponderEliminar
  3. muchas gracias estimado , justo lo que estaba buscando.
    saludos desde bolivia

    ResponderEliminar
    Respuestas
    1. Gracias, me alegro que te haya servido.

      ¡Un saludo!

      Xavi.

      Eliminar
  4. Hola, buen material, tengo mi siguiente consulta... como puedo agregar por powershell datos a un atributo en userparameters? en esto necesito agregar numero identificador a cada usuario.

    ResponderEliminar
    Respuestas
    1. Con el cmd-let: Set-Aduser, puedes cambiar valores en los atributos.

      Ejemplo:

      Set-Aduser xavi.sysadmit –replace @{atributo1="Hola"}

      Puedes usar los parámetros:

      –add
      -replace
      –remove

      ¡Un saludo!

      Xavi.

      Eliminar
  5. hola y si como ver quien creo la cuenta del usuario, que cuenta creo dicha cuenta.

    ResponderEliminar
    Respuestas
    1. Hola Edgardo,

      Si quieres saber el usuario que ha creado o eliminado alguna cuenta tienes que habilitar primero la auditoría de cuentas.

      Aquí tienes un enlace donde explica paso a paso como hacerlo y ver el detalle de quien ha creado o eliminado una cuenta:

      https://blogs.technet.microsoft.com/abizerh/2010/05/27/tracing-down-user-and-computer-account-deletion-in-active-directory/

      ¡Un saludo!

      Xavi.

      Eliminar
  6. Hola me podrian colaborar, necesito comando que me traiga el Usuario pero solo con el SID y si es posible que me lo exporte a un CSV

    ResponderEliminar
    Respuestas
    1. Hola Kevin,

      Si ejecutas:

      Get-AdUser -Filter * |select-object Name, SID

      Conseguirás un listado de todos los nombres y SIDs de Active Directory.

      Si quieres exportar la salida a CSV, bastará con ejecutar:

      Get-AdUser -Filter * |select-object Name, SID| Export-Csv c:\SYSADMIT\User-SID.txt

      Substituye la ruta y fichero de Export-Csv por la que quieras.

      Un saludo,

      Xavi.

      Eliminar
  7. Clear-Host #Extrae archivos de usuario segun sus propiedades
    $Error.Clear()
    #Ruta del fichero CSV a generar
    #$CSV = "D:\Grupos\Users_AD_CO.csv"

    If (Test-Path $CSV)
    {
    Remove-Item $CSV
    }

    Import-Module Activedirectory
    $Users = (Get-ADUser -Filter * -properties * | Select-Object SamAccountName,DisplayName,EmployeeID,LastLogonDate,WhenCreated,whenChanged,enabled,CanonicalName,DistinguishedName )

    $Table = @()

    $Record = @{
    "SamAccountName" = ""
    "DisplayName" = ""
    "EmployeeID" = ""
    "LastLogonDate" = ""
    "whenChanged" = ""
    "WhenCreated" = ""
    "Status" = ""
    "CanonicalName" = ""
    "DistinguishedName"
    }

    Foreach ($User in $Users)
    {
    $Record."DisplayName" = $User.DisplayName
    $Record."SamAccountNAme" = $User.SamAccountName
    $Record."EmployeeID" = $User.EmployeeID
    $Record."LastLogonDate" = $User.LastLogonDate
    $Record."WhenCreated" = $User.WhenCreated
    $Record."WhenChanged" = $User.WhenChanged
    $Record."Status" = $User.Enabled
    $Record."CanonicalName" = $User.CanonicalName
    $Record."DistinguishedName" = $User.DistinguishedName

    $objRecord = New-Object PSObject -property $Record
    $Table += $objrecord

    } $Table | Export-Csv $CSV -append
    {
    Write-Error $Error[0].Exception.Message
    }

    ResponderEliminar
  8. Excelente aporte, justo lo que buscaba Codigo Postal y Teléfono oficina!
    Gracias por tu aporte!

    ResponderEliminar
    Respuestas
    1. Muchas gracias. Me alegro que te haya resultado útil.

      Un saludo,

      Xavi.

      Eliminar
  9. buenas,
    Un script que extraiga el atributo lognohours y lo guarde en un txt y después recuperarlo, es decir, después de haber cambiado este atributo, volver a poner el que hemos guardado en el primer paso...
    No sé si me explico.
    Pero gracias de antemano.

    ResponderEliminar
  10. Hola, aqui solo tienes que ver cual es la propiedad que necesitas, la filtras y listo, saludos

    Clear-Host #Extrae archivos de usuario segun sus propiedades
    $Error.Clear()
    #Ruta del fichero CSV a generar
    #$CSV = "D:\Grupos\Users_AD_CO.csv"

    If (Test-Path $CSV)
    {
    Remove-Item $CSV
    }

    Import-Module Activedirectory
    $Users = (Get-ADUser -Filter * -properties * | Select-Object SamAccountName,DisplayName,EmployeeID,LastLogonDate,WhenCreated,whenChanged,enabled,CanonicalName,DistinguishedName )

    $Table = @()

    $Record = @{
    "SamAccountName" = ""
    "DisplayName" = ""
    "EmployeeID" = ""
    "LastLogonDate" = ""
    "whenChanged" = ""
    "WhenCreated" = ""
    "Status" = ""
    "CanonicalName" = ""
    "DistinguishedName"
    }

    Foreach ($User in $Users)
    {
    $Record."DisplayName" = $User.DisplayName
    $Record."SamAccountNAme" = $User.SamAccountName
    $Record."EmployeeID" = $User.EmployeeID
    $Record."LastLogonDate" = $User.LastLogonDate
    $Record."WhenCreated" = $User.WhenCreated
    $Record."WhenChanged" = $User.WhenChanged
    $Record."Status" = $User.Enabled
    $Record."CanonicalName" = $User.CanonicalName
    $Record."DistinguishedName" = $User.DistinguishedName

    $objRecord = New-Object PSObject -property $Record
    $Table += $objrecord

    } $Table | Export-Csv $CSV -append
    {
    Write-Error $Error[0].Exception.Message
    }

    ResponderEliminar
  11. Hola haber si me puedes ayudar con lo siguente:

    Necesito mostrar los usuarios del AD que tengan un mail configurado i ordenarlos por el DN.

    Merci!

    ResponderEliminar
    Respuestas
    1. Hola Mohamed,

      Aquí lo tienes:

      Get-ADUser -Properties mail -Filter {mail -like '*'}|Select-Object Name, DistinguishedName,Mail|Sort-Object DistinguishedName

      Un saludo,

      Xavi.

      Eliminar
  12. Hola me gustaria saber como hacer este mismo listado, pero en vez que sea para un solo usuario, que sea para todos los usuarios del AD. Tambien si es posible en vez de que sean usuarios tambien que sean de todos los equipos en el dominio.

    Muy buen aporte. Un abrazo

    ResponderEliminar
    Respuestas
    1. Hola,

      En el segundo ejemplo del post, tienes cómo hacerlo para todos los usuarios del dominio.

      Sobre tu segunda pregunta: El equivalente de Get-ADUser pero para equipos es: Get-Adcomputer

      Un saludo,

      Xavi.

      Eliminar
  13. hola buenas... como podría sacar el correo de varios usuarios sin tener que ir uno a uno.. es decir importando un fichero con los nombres de los usuarios y que trabaje dándome sus correos, se haría con un bucle for?, muchas gracias

    ResponderEliminar
    Respuestas
    1. Hola,

      Sí, no hay problema.

      Con este cmd-let, obtendrás para cada usuario de Active Directory su dirección de correo:

      Get-ADUser -Filter * -Properties DisplayName, EmailAddress | select DisplayName, EmailAddress

      Por otro lado, si tienes Exchange Server, puedes utilizar la PowerShell de Exchange junto con el cmd-let indicado aquí:

      https://www.sysadmit.com/2018/04/exchange-exportar-direcciones-smtp.html

      Un saludo,

      Xavi.

      Eliminar
  14. Buenas tardes,

    Tengo una consulta.

    Como puedo hacer para que me muestre todo los usuarios que hay en una "OU" con todas sus propiedades. Escribí solo el comando de GET-ADUSER -properties *|more, y me arrojo todos los usuario que hay en el AD.

    Mi Consulta es como hago para solo ver los usuarios de una OU y sus propiedades completas. y luego exportarlas.

    Gracias de Antemano.

    ResponderEliminar
    Respuestas
    1. Hola Luis,

      Aquí tienes un ejemplo de cómo hacerlo:

      Get-ADUser -SearchBase "OU=USUARIOS,DC=SYSADMIT,DC=local" -Filter * -Properties *|more

      En el ejemplo, el dominio es SYSADMIT.local y la OU donde están situados los usuarios es: USUARIOS.

      Un saludo,

      Xavi.

      Eliminar
    2. Muchas gracias por haber respondido.

      Y luego de haber hecho esto, como podría exportarlos?, es para completar unos campos y luego importarlos al AD.

      Gracias.

      Eliminar
    3. Hola Luis,

      Puedes substituir el comando |more por: |export-csv c:\Ruta\fichero.csv

      y exportarás a un fichero CSV.

      Un saludo,

      Xavi.

      Eliminar
    4. Una ultima consulta, después de haber modificado y completado los campos en el archivo .csv, como sería para importar el archivo al AD?

      Muchas Gracias

      Eliminar
    5. Hola Luis,

      Aquí tienes un ejemplo:

      https://social.technet.microsoft.com/wiki/contents/articles/24541.powershell-bulk-create-ad-users-from-csv-file.aspx

      Un saludo,

      Xavi.

      Eliminar
    6. Muchas Gracias por las respuesta, me ayudaron en muchas cosas.

      Saludos.

      Eliminar
    7. Gracias a ti.

      Me alegro que las respuestas te hayan ayudado.

      Un saludo,

      Xavi.

      Eliminar
  15. Hola, quisiera saber con que script puedo exportar a un archivo todos los usuarios del directorio activo con la fecha de creación y estado de la cuenta

    ResponderEliminar
    Respuestas
    1. Hola,

      Con el cmd-let: Get-ADUser -Filter *, puedes obtener una lista de los usuarios que quieras.

      Ejemplo:

      - Teléfono de la oficina y código postal de todos los usuarios.

      Get-AdUser -Filter * -Properties OfficePhone, PostalCode

      Subtituye OfficePhone, PostalCode por las propiedades que quieras.

      Un saludo,

      Xavi.

      Eliminar
  16. hola,

    quisiera saber como puedo hacer para comparar dos usuarios y que me muestre la lista de grupos diferentes a los que pertenece

    ResponderEliminar
  17. Estimado.

    Necesito una manera de exportar los usuarios con x atributos de un grupo de seguridad especifico

    ResponderEliminar
  18. Por favor, cómo podría hacer un script a partir de una consulta en un archivo, para que me borre los registros que encontró en esa consulta?
    Ese Script debe ejecutarse mensualmente, cómo puede renovar el archivo de esa consulta?

    ResponderEliminar
    Respuestas
    1. Hola Evelin,

      Creo que con una redirección a un fichero de texto y una tarea programada lo resolverías.

      Por ejemplo:

      Get-AdUser Xavi -Properties * > C:\SYSADMIT\Salida-fichero.txt

      A cada ejecución, se sobrescribe el fichero de texto.

      Para programar su ejecución, puedes hacerlo con una tarea programada.

      Un saludo,

      Xavi.

      Eliminar
  19. Buenos días

    necesitaría un listado de todos mis usuarios de AD con su último lastlogon indicando en que máquina se produjo.....

    muchísimas gracias por anticipado

    ResponderEliminar
  20. Hola buenas tardes, me gustaría obtener un ejemplo de Script que ingresara un equipo a la OU pero si existe enviara el msj y de la opcion de eliminarlo, para evitar duplicidad.

    ResponderEliminar
  21. hola me gustaria conocer las propiedades para exportar datos de usuario por OU

    ResponderEliminar
  22. Hola Amigo, buenas, queria saber si se puede extraer información de un grupo de usuarios que tengo en una planilla con ciertos criterios.

    ResponderEliminar
  23. Muy buenas noches.
    Amigo quisiera saber como puedo editar el atributo proxyAddresses en el cual encontramos SMTP:xxxxxx@dominio.com

    ResponderEliminar
    Respuestas
    1. Hola Diego,

      Aquí tienes algunos ejemplos:

      Añadir ProxyAdresses:

      Set-ADUser Usuario -add @{ProxyAddresses="smtp:Hola@dominio.com"}

      Listar ProxyAdresses:

      get-aduser Usuario -Properties ProxyAddresses | select Name, ProxyAddresses

      Eliminar ProxyAddresses:

      Set-ADUser Usuario -remove @{ProxyAddresses="smtp:Hola@dominio.com"}

      Un saludo,

      Xavi.

      Eliminar
  24. Hola!

    tengo una consulta, como puedo encontrar a un usuario por su numero de empleado, atributo EmployeeID?

    gracias!

    ResponderEliminar
  25. necesito modificar atraves de power shell propuedades extendidas :( es psible? alguien sabe como hacerlo?

    ResponderEliminar
  26. Hola, se podra traer solo el nombre?
    Cuando ejecuto
    PS C:\WINDOWS\system32> Get-ADUser -Identity $env:username -Properties displayname
    me trae todas las propiedades, y quiero solo el displayname

    se podra?

    ResponderEliminar
    Respuestas
    1. Hola,

      Aquí lo tienes:

      Get-ADUser -Identity $env:username -Properties displayname|Select-Object DisplayName

      Saludos,

      Xavi.

      Eliminar
  27. Hola!

    tengo una consulta, como puedo extraer los usuario que tiene activa o no el autenticación multifactor que atributo debo ejecutar.

    gracias!

    ResponderEliminar