Estou desenvolvendo um script para relatar usuários que não fizeram login no domínio por seis meses. Eu estou usando lastLogonTimestamp
como dentro de 14 dias é preciso o suficiente para meus propósitos, e eu não quero ter que consultar cada DC.
O problema é que, quando executo o script, o lastLogonTimestamp
fica em branco para quase 600 usuários. Mas, e aqui está o estranho, eu posso fazer Get-ADUser
(que é o que é usado dentro do script para recuperar esta informação) para um desses usuários no mesmo prompt e isso me dá um valor.
O que poderia estar causando isso?
ATUALIZAÇÃO: Apenas para esclarecer. Sim, o DFL é de 2003. Além disso, para esclarecer. Estou me referindo apenas ao atributo lastLogonTimestamp, não a qualquer outro atributo.
O script começa criando um objeto contendo todos os usuários:
$userlist = Get-ADUser -Filter * -properties lastLogonTimestamp
Além de alguma outra lógica, escrevo cada usuário em um arquivo de texto usando um foreach ($user in $userlist)
loop. Efetivamente
$name = $user.Name
$llts = $user.lastLogonTimestamp
Quando reviso o arquivo de texto, o lastLogonTimestamp fica em branco para quase 600 usuários. De algumas delas, eu escolho um assunto de teste, por exemplo, alguém que eu conheço fez logon recentemente, digamos user-x. User-x terá lastLogonTimestamp em branco no arquivo de texto. Se, no entanto, eu então correr
Get-ADUser user-x -properties lastLogonTimestamp
na mesma linha de comando após o script ser concluído para user-x, ele retorna um valor para lastLogonTimestamp.
UPDATE 2: Isso não faz sentido! Alterei o script para extrair a propriedade lastLogonTimestamp no loop, em vez de criar o objeto userlist:
foreach ($user in $userlist)
{
$SamAccountName = $user.SamAccountName
$thisUser = Get-ADUser $SamAccountName -properties lastLogonTimeStamp
...
}
Eu pensei que isso iria replicar mais de perto o que eu estou usando na linha de comando quando ele puxa a propriedade com sucesso, mas ainda não funciona. Provavelmente vale a pena apontar que são sempre os mesmos usuários.