【发布时间】:2016-07-28 21:21:51
【问题描述】:
我正在编写一个脚本,用于过滤 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()然后if($pc.LastLogonTimeStamp -lt $DeleteFileTime)
标签: powershell if-statement active-directory