
El Search-ADAccount
cmdlet tiene modificadores -AccountDisabled
y -AccountExpired
; -AccountInactive
cuyos resultados no podrán ser mutuamente excluyentes ni inclusivos.
es decir, una cuenta que se deshabilitó ayer pero que solo ha estado inactiva durante 1 semana puede no aparecer como deshabilitada si nuestro período de tiempo es de -90 días. Por el contrario, una cuenta que aún no se ha deshabilitado pero que no se ha utilizado durante un tiempo aparecerá como inactiva pero no deshabilitada.
¿Existe alguna forma de utilizar estos modificadores para enumerar todas OR
las cuentas inactivas caducadas y deshabilitadas? ¿O tengo que ejecutar tres consultas y luego hacer una | select * -unique
para eliminar duplicados?
Respuesta1
Así es como lo haría.
Get-ADUser -Filter * -Properties Enabled, AccountExpirationDate, LastLogonDate | ? { `
($_.Enabled -EQ $False) -OR `
($_.AccountExpirationDate -NE $NULL -AND $_.AccountExpirationDate -LT (Get-Date)) -OR `
($_.LastLogonDate -NE $NULL -AND $_.LastLogonDate -LT (Get-Date).AddDays(-90)) }
Una llamada a AD obtiene solo las propiedades que necesitamos. Incluye todos los usuarios que están deshabilitados, caducados (una configuración poco común) o "inactivos".
Tenga en cuenta que LastLogonDate será nulo si se creó la cuenta de usuario pero el usuario nunca inició sesión.
AccountExpirationDate también será nulo la mayor parte del tiempo, ya que los administradores no suelen utilizar esa configuración. Debe verificar que no sean nulos antes de poder realizar comparaciones significativas con las fechas.
Si desea incluir cuentas de usuario que nunca iniciaron sesión, simplemente elimine la marca $Null en LastLogonDate... pero eso significa que verá cuentas que pueden haber sido creadas ayer y simplemente no han tenido la oportunidad de iniciar sesión todavía. .. en cuyo caso, para compensar, agregue una marca para WhenCreated -LT (Get-Date).AddDays(-90)
asegurarse de obtener solo cuentas que se crearon hace más de 90 días pero que nunca iniciaron sesión.
Y para responder realmente a su pregunta sobre el Search-ADAccount
cmdlet... no, use un cmdlet diferente, esos modificadores son mutuamente excluyentes.