Powershell 帮助清理 Active Directory

Powershell 帮助清理 Active Directory

我刚刚开始为一家大公司清理 Active Directory 系统的合同。有人告诉我这项工作会很忙,但在查看了系统并发现它是多么混乱之后,我意识到我无法充分履行职责。从本质上讲,这家公司有太多不活跃但暂时无法删除的帐户。我想对某些帐户进行“尖叫测试”,然后稍后删除。如果只有几千个不活跃的帐户,那就不成问题了,但不幸的是,这个数字相当大(我还没有确定确切的数字,但肯定超过 20,000 个)。我很好奇,除了使用 Hyena 获取报告然后逐一查看之外,是否有人知道以自动方式对这些信息进行分类的方法。

答案1

我假设您的问题在于查找不活跃的账户。

我使用 JoeWare 的Oldcmp工具。 http://www.joeware.net/freetools/tools/oldcmp/index.htm这么多年过去了。

它可以通过查看密码使用期限来查找不活动的 AD 帐户,特别是LLTS = lastLogonTimestamp

它足够简单,至少可以让你入门,而且比 powershell 更容易。然后禁用这些帐户并使用 ADUC 为禁用的帐户创建自定义查询窗口。这样,你就不必移动任何可能需要稍后重新启用的内容。

但是……我同意 Hopeless 和 Mfinni 的观点,并且建议您最好在实施任何事情之前与管理层清楚地说明您计划做什么。

答案2

我使用 Powershell 来执行此操作,调用lastlogondate属性。

这里我返回所有samaccountname上次登录日期超过 30 天(从今天起)的用户:

$datenow = Get-date
$treshold=$datenow.AddDays(-30)
$users=Get-ADuser -Filter * -properties samaccountname,lastlogondate
foreach($user in $users) {
  $lastlogon = $user.lastlogondate
  if($lastlogon -lt $treshold) { 
    echo $user.samaccountname
    echo $user.lastlogondate
    echo "------------------------------------------------"
  }
}

从这里,您可以:

  • 根据您的需要调整日期阈值
  • 禁用 AD 帐户(禁用-ADAccount
  • 任何你想要的东西(至少,大多数东西)

答案3

上述关于变更控制和记录权限的建议很好。我会尝试这样的方法

lastLogonTimestamp建立一个包含属性(如、pwdLastSetwhencreated)的帐户清单whenchanged。您可以使用 Powershell 和来获取所有这些内容get-ADUser。我相信网络上存在大量脚本 - TechNet 脚本存储库是一个很好的起点

使用库存来定位目标帐户。

在对 AD 进行更改之前,请考虑在测试环境中测试所有内容。存储库中有一些脚本可让您将 AD(OU、用户和组)复制到测试环境中。

答案4

以下是一些解决方案。不太确定这是否是您要找的。

示例 1: 这将搜索 OU用户在域中域名.本地使用指定的日期。您可以在下面更改这些并输出用户名上次登录时间戳喜欢:

用户1

2014 年 2 月 13 日

用户2

2013 年 12 月 12 日

Import-Module Active Directory
$lastdate = "09 April 2014 23:59:59"
$users = Get-ADUser -Filter * -SearchBase "ou=users,dc=domain,dc=local" -ResultPageSize 0 -Prop CN,lastLogonTimestamp | Select     CN,@{N='lastlogontimestamp'; E={[DateTime]::FromFileTime($_.lastlogontimestamp)}}
foreach ($user in $users) {
if ($user.lastlogontimestamp -lt $lastdate) {
echo $user.CN
echo $user.lastlogontimestamp.tostring('d/M/yyyy')
}
}

示例 #2: 这将搜索 OU用户在域中域名.本地。然后将其导出为 CSV,这样您就可以更好地查看数据。

Import-Module ActiveDirectory
Get-ADUser -Filter * -SearchBase "ou=users,dc=domain,dc=local" -ResultPageSize 0 -Prop CN,lastLogonTimestamp | Select    CN,@{N='lastLogonTimestamp'; E={[DateTime]::FromFileTime($_.lastLogonTimestamp)}} | Export- CSV -NoType .\last.csv

通过示例 2,您可以在 CSV/Excel 中列出要删除/禁用的用户列表,然后使用这些用户进入管理。

希望这可以帮助!

相关内容