Preciso obter a última alteração de senha para um grupo de contas em um grupo de segurança do Active Directory e acho que isso é algo em que o PowerShell deve ser bom.
No momento, eu já estou preso em como ler o atributo pwdLastSet da conta do AD que estou vendo. Mesmo executando algo simples como este:
[adsi] "LDAP://cn=user1,ou=Staff,ou=User Accounts,dc=ramalamadingdong,dc=net" | Format-List *
fornece resultados para pwdLastSet que aparecem assim:
pwdLastSet : {System.__ComObject}
Sinto que estou fazendo isso da maneira errada; então, qual é a melhor maneira de consultar e formatar a saída (o valor é baseado na época do Windows e não é muito legível para humanos) do atributo pwdLastSet?
fonte
Os comandos do AD incorporados que acompanham o Windows 7 / Windows Server 2008 R2 agora podem fazer isso com bastante simplicidade. No Windows 7, a partir de um prompt do Powershell:
O atributo "PasswordLastSet" parece ser uma versão traduzida do atributo "pwdLastSet" real.
fonte
Existe uma maneira mais fácil.
O objeto ADSI possui um método chamado ConvertLargeIntegerToInt64. Observe que é um método do objeto ADSI e não do objeto System .__ retornado consultando o valor de um atributo de carimbo de data / hora, para que $ user.pwdLastSet.value.ConvertLargeIntegerToInt64 () não funcione. Você precisa invocá-lo da seguinte maneira:
Isso fornecerá o registro de data e hora do LDAP, que precisa ser convertido para uma data legível, conforme explicado por Bratch acima. Isso funcionará para qualquer valor do atributo timestamp retornado pelo provedor ADSI, e o método ConvertLargeIntegerToInt64 é (acredito) exposto por qualquer objeto que represente uma entrada de diretório.
Juntando tudo, aqui está como você obtém a data em que a senha foi definida pela última vez:
fonte
Aqui está uma maneira fácil de exibir os computadores AD:
fonte
Instale: http://www.quest.com/powershell/activeroles-server.aspx
PowerShell aberto
Execute os seguintes comandos:
add-PSSnapin quest.activeroles.admanagement
Get-QADUser | ft nome de exibição, PasswordLastSet
O primeiro comando carrega o snap-in da missão que você acabou de baixar. Você não precisa fazer isso se usar o atalho para pesquisar no menu inicial. O segundo comando obtém uma lista de todos os usuários e o horário em que a senha foi alterada pela última vez.
fonte
Adicione a função ConvertADSLargeInteger ao seu script, você pode obtê-lo aqui:
PowerShell: Converter IADSLargeInteger do Active Directory em System.Int64
Aqui está como você o usaria:
fonte
talvez você deva usar a propriedade passwordLastChanged. Consulte aqui para obter mais informações: http://www.microsoft.com/technet/scriptcenter/resources/qanda/aug06/hey0801.mspx
fonte