Veja como eu faria isso.
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)) }
Uma chamada para o AD, obtém apenas as propriedades de que precisamos. Inclui todos os usuários que estão desativados ou expirados (uma configuração incomum) ou "inativos".
Observe que LastLogonDate será nulo se a conta do usuário foi criada, mas o usuário nunca efetuou login.
O AccountExpirationDate também será nulo na maior parte do tempo, pois os administradores não costumam usar essa configuração. Você precisa verificar se eles não são nulos antes que comparações significativas com datas possam ser feitas contra eles.
Se você quiser incluir contas de usuário que nunca fizeram login, basta remover a verificação de $ Null on LastLogonDate ..., o que significa que você verá contas que podem ter sido criadas ontem e que não tiveram a chance de fazer login. no entanto ... nesse caso, para compensar, adicione um cheque de WhenCreated -LT (Get-Date).AddDays(-90)
para ter certeza de obter apenas contas que foram criadas há mais de 90 dias, mas que nunca foram registradas.
E para responder à sua pergunta sobre o cmdlet Search-ADAccount
... não, use um cmdlet diferente, esses switches são mutuamente exclusivos.