3

我正在尝试列出所有在 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 更改为任何数字确实没有效果。建议?

4

4 回答 4

2

在这里查看按类别跟踪非活动用户(登录状态、禁用用户、密码过期用户、acc 过期用户、未登录用户、已删除用户等)

http://www.adsysnet.com/asn-active-directory-inactive-account-tracker-features.aspx

于 2013-11-21T09:43:54.340 回答
1

你的测试没问题(它在我的广告中工作)唯一的事情是你必须消除 $_.lastlogondate 为空的对象。

尝试 :

Search-ADAccount -accountinactive -usersonly  | where {! ($_.lastlogondate -lt (get-date).addMonths(-6))} | ft Name,lastlogondate

编辑:

因为 lastLogon 属性不在 Active Directory 中复制,所以可以在每个域控制器上的 Active Directory 副本中存储不同的值。一种解决方案是遍历所有域控制器以构建此类用户的列表。但我很确定还有其他解决方案!

于 2012-05-03T20:21:40.437 回答
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
于 2012-05-03T20:01:25.817 回答
0
$sixMonths = (Get-Date).AddMonths(-6)
Search-ADAccount -accountinactive -usersonly -datetime "$sixMonths"
于 2012-05-03T20:04:42.153 回答