我正在编写一个脚本,用于从Active Directory获取过去21天的非活动帐户。
我知道有一个简单的命令:
Search-ADAccount -AccountInactive -TimeSpan 21
但不幸的是,这甚至会返回LastLogonDate
早于21天窗口的帐户。所以我决定使用以下命令根据LastLogonDate
属性过滤记录:
$TimeSpan = 21
[DateTime]$date = (Get-Date).AddDays(-$TimeSpan)
$DistinguishedName = "OU=TestOU,DC=Test,DC=local"
$InactiveAccounts = Search-ADAccount -AccountInactive -TimeSpan 21 -SearchBase $DistinguishedName | where-object {$_.LastLogonDate -ge $date}
return $InactiveAccounts
这很好用。但是当我在函数中包含此代码并使用所需参数调用该函数时,它不会返回任何内容。如果我在函数内部用ge
替换le
,它可以正常工作。不知道为什么gt
或ge
无效。
答案 0 :(得分:1)
您的Search-ADAccount
查询将返回所有早于21天LastLogonDate
的帐户。您希望在过去21天内获得lastlogondate
的所有帐户:
Search-ADAccount -AccountInactive -TimeSpan 00.00:00:00 | Where {$_.LastLogonDate -le (Get-Date).AddDays(-21)}