Joh*_*van 5 powershell active-directory
该Search-ADAccountcmdlet 具有开关-AccountDisabled,-AccountExpired和-AccountInactive; 其结果可能既不相互排斥也不包括在内。
即,如果我们的时间跨度为 -90 天,昨天被禁用但仅处于非活动状态 1 周的帐户可能不会显示为禁用。相反,尚未禁用但有一段时间未使用的帐户将显示为不活动但未禁用。
有没有办法使用这些开关来列出所有禁用、过期的OR非活动帐户;还是我必须运行三个查询然后| select * -unique删除重复项?
Rya*_*ies 10
这就是我要怎么做。
Get-ADUser -Filter * -Properties Enabled, AccountExpirationDate, LastLogonDate | ? { `
($_.Enabled -EQ $False) -OR `
($_.AccountExpirationDate -NE $NULL -AND $_.AccountExpirationDate -LT (Get-Date)) -OR `
($_.LastLogonDate -NE $NULL -AND $_.LastLogonDate -LT (Get-Date).AddDays(-90)) }
Run Code Online (Sandbox Code Playgroud)
一次调用 AD,只获取我们需要的属性。包括所有被禁用、过期(一种不常见的设置)或“非活动”的用户。
请注意,如果用户帐户已创建但用户从未登录,则 LastLogonDate 将为 null。
AccountExpirationDate 大部分时间也将为空,因为管理员不经常使用该设置。在对日期进行有意义的比较之前,您需要检查它们是否为空。
如果您想包括从未登录过的用户帐户,只需删除 LastLogonDate 上 $Null 的检查...但这意味着您将看到可能已在昨天创建但尚未有机会登录的帐户。 .. 在这种情况下,作为补偿,请添加检查WhenCreated -LT (Get-Date).AddDays(-90)以确保仅获取 90 多天前创建但从未登录过的帐户。
并且要实际回答有关Search-ADAccountcmdlet的问题...不,请使用不同的 cmdlet,这些开关是互斥的。
| 归档时间: |
|
| 查看次数: |
16012 次 |
| 最近记录: |