2016-07-12 11 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」のアカウントを21日以上古いものにしたいのですか?21日以内にlastlogondateのアカウントをすべて取得しますか? –

+0

lastlogondateが最後の21日のタイムスパンに収まるように、過去21日間、すべての非アクティブなアカウントが必要です。 – Meenakshi

答えて

1

Search-ADAccountクエリは、LastLogonDateより古い21日のすべてのアカウントを返します。

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は関数内で動作します。再現可能な例を私たちと共有する必要があります。 –

関連する問題