我正在尝试列出所有未在6个月内登录的帐户。
这是我第一次真正使用PowerShell,而我现在只是编辑其他人的脚本以满足我自己的需求。
我想将搜索分为两个列表:仅限计算机和仅用户。
六个月以外的计算机代码。
Search-ADAccount -accountinactive -computersonly | where {$_.lastlogondate -lt (get-date).addmonths(-6)} | FT Name,LastLogonDate
六个月以外的用户代码。
Search-ADAccount -accountinactive -usersonly | where {$_.lastlogondate -lt (get-date).addmonths(-6)} | FT Name,LastLogonDate
然而,这些都不起作用,只是吐出所有帐户。我也注意到将-6改为任何数字都没有效果。 建议?
答案 0 :(得分:2)
点击此处查看按类别跟踪非活动用户(登录状态,已禁用用户,密码已过期用户,已过期用户,已登记用户,已删除用户等)
http://www.adsysnet.com/asn-active-directory-inactive-account-tracker-features.aspx
答案 1 :(得分:1)
你的测试没问题(它在我的AD中工作)唯一的事情是你必须消除$ _。lastlogondate为null的对象。
尝试:
Search-ADAccount -accountinactive -usersonly | where {! ($_.lastlogondate -lt (get-date).addMonths(-6))} | ft Name,lastlogondate
编辑:
由于未在Active Directory中复制lastLogon属性,因此可以在每个域控制器上的Active Directory副本中存储不同的值。一种解决方案是遍历所有域控制器以构建这样的用户列表。但我非常确定还有另一种解决方案!
答案 2 :(得分:0)
我认为您需要传递日期或时间跨度以及-AccountInactive开关。这样做应该不需要自定义过滤器,所以尝试这样的事情(未经测试):
Search-ADAccount -accountinactive -datetime (get-date).AddMonths(-6) -computersonly | ft Name,LastLogonDate
Search-ADAccount -accountinactive -datetime (get-date).AddMonths(-6) -userssonly | ft Name,LastLogonDate
答案 3 :(得分:0)
$sixMonths = (Get-Date).AddMonths(-6)
Search-ADAccount -accountinactive -usersonly -datetime "$sixMonths"