Preguntas

Preguntas

Creé un script de PowerShell 5.1 para exportar todos los usuarios en la base de datos y guardar todos los datos en un archivo CSV. El script le permite establecer una fecha en el tiempo para que pueda decidir desde cuándo desea que se exporten sus usuarios.

Después de algunas pruebas, me di cuenta de que no todos los usuarios se exportan y, tras investigar más a fondo, me di cuenta de que la propiedad WhenChangedy WhenCreatedno están presentes para cada usuario. A pesar de que la interfaz de usuario de AD muestra la propiedad con los datos correctos, como se ve en la captura de pantalla siguiente.

ingrese la descripción de la imagen aquí

Cuando ejecuto el siguiente comando:

Get-ADUser -filter * -Properties LastLogonDate, userPrincipalName, initials, WhenCreated, whenChanged | Select-Object userPrincipalName, initials, whenCreated, whenChanged 

Obtengo el siguiente resultado:

 userPrincipalName  initials whenCreated            whenChanged          
-----------------  -------- -----------            -----------          
                            11/9/2017 2:06:29 PM   1/24/2018 4:26:48 PM 


                            11/9/2017 2:07:47 PM   11/22/2017 4:12:52 PM
[email protected] MP       11/14/2017 3:14:45 PM  2/14/2018 4:02:51 AM 
[email protected] DG       11/15/2017 12:51:25 PM 2/21/2018 2:12:52 PM 
[email protected] AE                                                   
[email protected] MM                                                   
[email protected] RW                                                   
[email protected] KK                                                   
[email protected] AP                                                   
[email protected] JS                                                   
[email protected] CB       11/17/2017 12:21:32 PM 11/22/2017 4:41:35 PM


[email protected]                                                      
[email protected] TT                                                   

Como puede ver, el usuario con las iniciales TT no tiene ningún valor a pesar de que la captura de pantalla muestra que las tiene. A pesar de que creé este usuario hoy y cambié algunos valores el mismo día.

Preguntas

  • ¿Qué me estoy perdiendo?
  • ¿Es un problema con el propio AD o simplemente con el comando?

Respuesta1

La solución al problema es hacer clic derecho en el acceso directo de PowerShell y seleccionar Run as Administrator. Tienes que hacer esto incluso si ya eres administrador. Si hace eso y ejecuta el comando nuevamente, todos sus datos estarán allí.

userPrincipalName  initials whenCreated            whenChanged
-----------------  -------- -----------            -----------
                            11/9/2017 2:06:29 PM   1/24/2018 4:26:48 PM
                            11/9/2017 2:06:29 PM   11/9/2017 2:06:29 PM
                            11/9/2017 2:06:29 PM   11/9/2017 2:06:29 PM
                            11/9/2017 2:07:47 PM   11/22/2017 4:12:52 PM
[email protected] MP       11/14/2017 3:14:45 PM  2/14/2018 4:02:51 AM
[email protected] DG       11/15/2017 12:51:25 PM 2/21/2018 2:12:52 PM
[email protected] AE       11/16/2017 1:11:30 PM  11/22/2017 4:11:37 PM
[email protected] MM       11/16/2017 1:12:02 PM  11/22/2017 4:11:37 PM
[email protected] RW       11/16/2017 1:12:40 PM  11/22/2017 4:11:37 PM
[email protected] KK       11/16/2017 1:13:13 PM  11/22/2017 4:11:37 PM
[email protected] AP       11/16/2017 1:14:15 PM  11/22/2017 4:11:37 PM
[email protected] JS       11/16/2017 1:14:50 PM  11/22/2017 4:11:37 PM
[email protected] CB       11/17/2017 12:21:32 PM 11/22/2017 4:41:35 PM
                            11/22/2017 3:37:49 PM  2/16/2018 2:50:25 PM
                            11/22/2017 3:38:43 PM  2/17/2018 3:58:24 PM
[email protected]          11/22/2017 4:02:18 PM  11/22/2017 4:41:36 PM
[email protected] TT       2/21/2018 1:21:13 PM   2/21/2018 1:59:17 PM

Respuesta2

Como tú, cuando ejecuté este comando:

Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"' | select whenchanged

la fecha siempre estaba vacía. Encontré este artículo:https://www.itprotoday.com/powershell/view-all-properties-ad-objects-powershelleso me mostró cómo enumerar todas las propiedades de un objeto:

Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"'  -properties *

Lo que me lleva a esta variación de mi consulta para mostrar apropiadamente cuandoChanged (o cualquier otra propiedad):

Get-ADObject -filter 'sAMAccountName -eq "xxxxxx"'  -properties *| select whenchanged

Tenga en cuenta que puede reemplazar el "*" con una lista delimitada por comas de las propiedades que le interesan; esto probablemente tenga implicaciones de rendimiento si tiene conjuntos de datos grandes o RAM limitada.

Espero que esto ayude a otros.

información relacionada