Necesito obtener el último cambio de contraseña para un grupo de cuentas en un grupo de seguridad de Active Directory, y creo que esto es algo en lo que PowerShell debería ser bueno.
En este momento, ya estoy atascado en cómo leer el atributo pwdLastSet de la cuenta de AD que estoy viendo. Incluso ejecutando algo simple como esto:
[adsi] "LDAP://cn=user1,ou=Staff,ou=User Accounts,dc=ramalamadingdong,dc=net" | Format-List *
da resultados para pwdLastSet que aparecen así:
pwdLastSet : {System.__ComObject}
Siento que hago esto de la manera incorrecta, entonces, ¿cuál es la mejor manera de consultar y luego formatear la salida (el valor se basa en la época de Windows y no es muy legible para los humanos) del atributo pwdLastSet?
Los comandos AD incorporados que vienen con Windows 7 / Windows Server 2008 R2 ahora pueden hacer esto de manera bastante simple. En Windows 7 desde un indicador de Powershell:
El atributo "PasswordLastSet" parece ser una versión traducida del atributo real "pwdLastSet".
fuente
Hay una manera más fácil.
El objeto ADSI tiene un método llamado ConvertLargeIntegerToInt64. Tenga en cuenta que es un método del objeto ADSI y no el Sistema .__ Como objeto que se devuelve al consultar el valor de un atributo de marca de tiempo, por lo que $ user.pwdLastSet.value.ConvertLargeIntegerToInt64 () no funcionará. Debe invocarlo de la siguiente manera:
Eso le proporcionará la marca de tiempo LDAP, que debe convertirse a una fecha legible, como explica Bratch anteriormente. Esto funcionará para cualquier valor de atributo de marca de tiempo devuelto por el proveedor ADSI, y el método ConvertLargeIntegerToInt64 está (creo) expuesto por cualquier objeto que represente una entrada de directorio.
Poniendo todo junto, así es como obtienes la fecha en que se configuró la contraseña por última vez:
fuente
Aquí hay una manera fácil de mostrar las computadoras AD:
fuente
Instalar: http://www.quest.com/powershell/activeroles-server.aspx
PowerShell abierto
Ejecute los siguientes comandos:
add-PSSnapin quest.activeroles.admanagement
Get-QADUser | ft displayname, PasswordLastSet
El primer comando carga el complemento de búsqueda que acaba de descargar. No necesita hacer esto si usa el atajo para buscar en su menú de inicio. El segundo comando obtiene una lista de todos los usuarios y la hora en que la contraseña se modificó por última vez.
fuente
Agregue la función ConvertADSLargeInteger a su script, puede obtenerla aquí:
PowerShell: Convierta Active Directory IADSLargeInteger a System.Int64
He aquí cómo usted lo utilizaría:
fuente
quizás deberías mirar usando la propiedad passwordLastChanged. Mira aquí para más información: http://www.microsoft.com/technet/scriptcenter/resources/qanda/aug06/hey0801.mspx
fuente