我期待產生一個PowerShell腳本,它將返回根中的所有用戶,並標記他們,如果帳戶處於非活動狀態超過15天和/或30天。我認爲我很接近,但我的If/Elseif聲明似乎沒有工作。有誰知道一種方法來改善這一點?修復PowerShell不活動的用戶腳本
$objSearcher.Filter = "(&(objectCategory=person)(objectClass=user))"
$objSearcher.PropertiesToLoad.Add("displayName")
$objSearcher.PropertiesToLoad.Add("sAMAccountName")
$objSearcher.PropertiesToLoad.Add("lastLogonTimeStamp")
$userObjects = $objSearcher.FindAll()
foreach ($user in $userObjects)
{
$dn = $user.Properties.Item("displayName")
$sam = $user.Properties.Item("sAMAccountName")
$logon = $user.Properties.Item("lastLogonTimeStamp")
if($logon.Count -eq 0)
{
$lastLogon = "Never"
}
#Inactive for 15 days
elseif($logon.Value -ge (get-date).AddDays(-15))
{
$lastLogon = "Pending"
}
#Inactive for 30 days
elseif($logon.Value -ge (get-date).AddDays(-30))
{
$lastLogon = "Retired"
}
else
{
$lastLogon = [DateTime]$logon[0]
$lastLogon = $lastLogon.AddYears(1600)
}
"""$dn"",$sam,$lastLogon"
}
感謝
感謝塞思,但與我現在的腳本,這只是將所有用戶更改爲待定。我認爲這可能與如何比較$ logon.Value和(get-date).AddDays(-30)有關。 – LinksTune
'$ LLTSlimit =(Get-Date).AddDays(-15).ToFileTimeUTC()。ToString() $ objSearcher.Filter =「(&(objectCategory = person)(objectClass = user)(!(userAccountControl:1.2 .840.113556.1.4.803:= 2))(lastlogontimestamp <= $ LLTSlimit))「' – LinksTune
@LinksTune我很確定這個邏輯是正確的,也許這個條件沒有比較兩個日期類型,例如$ logon .Value是一個字符串。不幸的是,我現在不是我可以測試的地方。 –