Sim, seu one-liner deve funcionar. Modifiquei o seu comando original para filtrar apenas por contas ativadas.
Get-ADuser -f {-not ( lastlogontimestamp -like "*") -and (enabled -eq $true)} | Disable-ADAccount
EDITAR ** Estou pensando em executar uma tarefa agendada no final de cada dia de trabalho para recuperar todas as contas que nunca fizeram logon e desativando suas contas. Por favor, desculpe quaisquer erros de sintaxe. Eu posso muito bem estar tateando aqui. Alguém pode dizer se esta solução funcionará?
get-aduser -f {-not ( lastlogontimestamp -like "*")} | Disable-ADAccount
Pergunta original **
Eu não sou um administrador de sistemas, sou mais um programador e novo no Active Directory e PowerShell. Eu fiz scripting em bash e outras linguagens para que eu possa pegar rapidamente.
Minha função atual (eu sou novo) tem um padrão de mercado para expirar / desativar contas se a primeira senha de uso não tiver sido utilizada em 24 horas. Eu fiz uma pesquisa e descobri que o AD não suporta esse recurso, mas aprendi que isso pode ser possível através de um script. Há um prazo apertado de uma auditoria e devo dizer que estamos um pouco desesperados.
Qualquer ajuda seria apreciada, mesmo apenas sobre as possíveis maneiras de definir o tempo de expiração ou identificar as contas que ainda não alteraram a senha.
Muito obrigado
Você pode verificar as seguintes propriedades para descobrir se a conta do usuário fez login ou alterou a senha.
LastLogonDate PasswordLastSet
get-aduser -identity ACCOUNTNAME -properties LastLogonDate,PasswordLastSet
O Active Directory não tem como definir a expiração da senha em contas individuais. Quando ele expira senhas, ele verifica o atributo Pwd-Last-Set da conta contra a configuração global Max-Pwd-Age .
Se você estiver usando algum tipo de processo com script para criar contas de usuário, eu faria o seguinte:
For simplicity's sake, Is there a way to simply check if the password has never been changed? That way, I could run a scheduled task at the end of the day disabling any account with this property? – Jacksgrin
No entanto, esta pergunta é bastante antiga, comparando os valores das propriedades Created
ou CreatedTimeStamp
, juntamente com a propriedade PasswordLastSet
que deve ser um começo.
get-aduser -identity [accountname] -properties Created,CreatedTimeStamp,PasswordLastSet,LastLogonDate
Isso deve mostrar se a senha da conta já foi alterada desde o início da conta.
FYI, não posso comentar ou teria respondido ao comentário dele.