我正在编写一个脚本,用于过滤AD中的计算机帐户。我想要禁用/删除至少90天内至少停用的所有帐户。如果他们不活跃,他们应该被禁用,至少90天,如果不活动超过180天,他们应该被删除同一变量中的不同时间格式
所以,我得到的日期禁用和删除
$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
然后我把它们变成一个foreach来确定停用或删除它们
foreach ($pc in $acc) {if($pc.LastLogonTimeSTamp -lt $delete){write-host 'delete'} else {write-host 'disable'}}
但在这里我遇到了错误$pc.LastLogonTimeSTamp
是类型[Int64的],是一个数量的18位, $delete
是格式化时间。但为什么以上LastLogonTimeSTamp -lt $disable
上面的相同比较工作,现在它可以吗?我该如何在这个简单的工作环境中工作?
'$ DeleteFileTime = $ delete.ToFileTime()'然后'如果($ pc.LastLogonTimeStamp -lt $ DeleteFileTime)' –