Pergunta muito genérica sobre saída diferente para Net User e Get-ADUser.
O que realmente está acontecendo "nos bastidores" quando executo cada comando? Eu trago isso apenas devido a obter resultados diferentes com LastLogonDate
qualquer conta de usuário executando os dois comandos. Por exemplo:
Get-ADUser -Identity "Abe" -Properties LastLogonDate
(retorno em 08/02/2021)Net user "Abe" /Domain
(retorno em 11/02/2021)
Então, o que realmente está acontecendo? Eu tentei usar ADSI
, mas, ele retorna as mesmas informações que Get-ADUser
. Se isso for completamente fora do tópico para o qual o SO se destina, sinta-se à vontade para fechá-lo e perguntarei em outro lugar.
Obrigada!
A propriedade lastLogonDate retornada por
Get-ADUser
mapas para o atributo lastLogonTimestamp no AD que é replicado, mas não mantido completamente preciso. Veja a descrição aqui .Net User refere-se ao atributo AD lastLogon. O que é preciso, mas não é replicado entre os controladores de domínio de referência Citação :
Existem muitos scripts por aí que coletam os controladores de domínio em loop e retornam o mais recente dos valores encontrados. Você pode verificar esta resposta e discussão para alguns insights. Observe que estávamos solucionando problemas de desempenho com o script, mas ainda assim há exemplos de código.
De interesse particular, e não mencionado na outra resposta, ambos os atributos são armazenados como inteiros de 64 bits representando o número de intervalos de 100 nanossegundos desde 1/1/1601 12:00. No entanto,
Get-ADUser
não converte lastLogon em um[DateTime]
valor típico para você. Além disso, é armazenado como UTC e deve ser convertido para a hora local, código semelhante ao abaixo demonstra o ponto:Nota:
Net User
parece fazer a mesma conversão.Nota: adicionei uma propriedade em vez de substituí-la. Isso é para demonstração pode precisar ser adaptador para seu projeto maior.