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
これが正常に動作します。しかし、このコードを関数の中に組み込み、その関数を必要なパラメータで呼び出すと、何も返されません。一方、関数内でge
をle
に置き換えても、正常に動作します。 gt
またはge
が機能しない理由を知らない
最後の「LastLogonDate」のアカウントを21日以上古いものにしたいのですか?21日以内に
lastlogondate
のアカウントをすべて取得しますか? –lastlogondateが最後の21日のタイムスパンに収まるように、過去21日間、すべての非アクティブなアカウントが必要です。 – Meenakshi