gt / ge运算符不能与powershell函数中的where-object一起使用

时间:2016-07-12 07:30:18

标签: powershell

我正在编写一个脚本,用于从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,它可以正常工作。不知道为什么gtge无效。

1 个答案:

答案 0 :(得分:1)

您的Search-ADAccount查询将返回所有早于21天LastLogonDate的帐户。您希望在过去21天内获得lastlogondate的所有帐户:

Search-ADAccount -AccountInactive -TimeSpan 00.00:00:00 | Where {$_.LastLogonDate -le (Get-Date).AddDays(-21)}