私はADのコンピュータアカウントをフィルタリングするスクリプトを作成しています。少なくとも90日間以上非アクティブになっているすべてのアカウントを無効/削除します。彼らは、彼らがそう同じ変数内の異なる時刻形式
を削除すべき180日以上の場合は無効、非アクティブの場合する必要があり、少なくとも90日間非アクティブである場合、私は
$disbale= (Get-Date).AddDays(-90)
$delete = (Get-Date).AddDays(-180)
を無効にし、削除するための日付を取得する今、私ループで特定の組織単位(OU)と、少なくとも90日間非アクティブなすべてのアカウントを取得します。したがって、180日以上も非アクティブなアカウントも取得します。
$acc = Get-ADcomputer -Filter {LastLogonTimeSTamp -lt $disable)} -Properties LastLogonTimeStamp,Description -SearchBase "OU=Computer,DC=dom,DC=de" -Server dom
その後、私はそれらをdisbaleまたは削除するには、foreachのにそれらを置く
foreach ($pc in $acc) {if($pc.LastLogonTimeSTamp -lt $delete){write-host 'delete'} else {write-host 'disable'}}
しかし、ここで私は[int64モード] $pc.LastLogonTimeSTamp
がタイプであることをエラーに遭遇したと18桁の番号であり、 $delete
は時間形式です。しかし、同じ比較をLastLogonTimeSTamp -lt $disable
以上にしたのはなぜですか?私はどのようにしてこれを簡単に動かすことができますか?
' $ DeleteFileTime = $ delete.ToFileTime()、次に 'IF($ pc.LastLogonTimeStamp -lt $ DeleteFileTime) ' –