2016-07-12 2 views
2

Active Directory에서 지난 21 일 동안 비활성 계정을 가져 오는 스크립트 작업을하고 있습니다.gt/ge 연산자가 powershell 함수의 where-object와 작동하지 않습니다.

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 

. 그러나이 코드를 함수 안에 포함하고 필요한 매개 변수를 사용하여 함수를 호출하면 아무 것도 반환하지 않습니다. 반면에 gele으로 바꾸면 제대로 작동합니다. gt 또는 ge이 작동하지 않는 이유를 모릅니다.

+0

당신이 이십일일 다음 세 이하 LastLogonDate''모든 계정을 얻을 하시겠습니까? –

+0

마지막 21 일 동안 모든 비활성 계정을 원하므로 lastlogondate는 지난 21 일의 시간 경과 기간 내에 있어야합니다. – Meenakshi

답변

1

귀하의 Search-ADAccount 검색어는 LastLogonDate 일 이전의 21 일 동안 모든 계정을 반환합니다. 당신은 지난 21 일 이내 lastlogondate 모든 계정을 얻으려면 :

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

답장을 보내 주신 Martin에게 감사드립니다. 당신은 맞습니다 lastlogondate 21 일 이상이어야합니다. 즉, Search-ADAccount -AccountInactive -TimeSpan 21.00.00.00이 실제로 올바른 결과를 반환한다는 의미입니다. 그러나 gt 연산자가 함수 내에서 작동하지 않는 이유는 무엇입니까? – Meenakshi

+0

gt ofcurse는 함수에서 작동합니다. 재현 가능한 예를 우리와 공유해야합니다. –

관련 문제