有没有简单快捷的方法来删除过时的 ActiveDirectory 用户?

有没有简单快捷的方法来删除过时的 ActiveDirectory 用户?

我们目前有大约 70 名员工,但 ActiveDirectory 中有 178 个帐户。前任管理员从未删除过旧帐户,有时甚至没有禁用它们。

事实上,我正在考虑手动检查每个帐户以确定是否可以删除。有没有更简单的方法可以根据条件删除帐户?例如,删除(或至少以某种方式禁用或标记)过去一个月内未登录的用户?

答案1

您可以使用以下dsquery方法来定位不活跃的用户:

dsquery user -inactive 10 -limit 0

应使所有用户处于不活跃状态 10 周或更长时间。

dsquery user /?

...
-inactive <NumWeeks>    Finds users that have been inactive
                        (not logged on) for at least <NumWeeks>
                        number of weeks.
...

如果您想从域中删除列表,可以将输出导入 dsrm。请注意,这不会提示您,因此请谨慎行事。

dsquery user -inactive 10 -limit 0 | dsrm -noprompt

请参阅这个有点相关的问题: 删除域中的旧计算机

答案2

如果您只是在被调用的批处理文件的上下文中运行 dsquery,并且从 dsquery 中选择了多个对象,那么您将得到“dsmove 失败(用户)是一个未知参数”。

我有两个批次(一个用于计算机帐户,一个用于用户帐户),它们每月从 Windows Sch 任务运行。它们具有以下代码:

对于计算机:

    for /f "Tokens=*" %%s in ('dsquery computer -inactive 5 -limit 0') do ( 
DSMOVE %%s -newparent "OU=Computers,OU=Quarantine,OU=MyOu,DC=MyDomain,DC=local" 
) 

对于用户:

        for /f "Tokens=*" %%s in ('dsquery user -inactive 5 -limit 0') do ( 
DSMOVE %%s -newparent "OU=Users,OU=Quarantine,OU=MyOu,DC=MyDomain,DC=local" 
) 

我将 GPO 应用于那些具有登录提示的“隔离”OU,以通知用户用户帐户或计算机帐户将被删除,并在他们认为有误时联系帮助台。GPO 还会执行一些锁定操作。然后,如果我没有看到任何异常(例如用户正在长期休假或离线但重要的服务器),我会检查移动的对象以进行手动删除。

如果您想跳过 OU 移动和审查,您可以将“do” dsmove 更改为 dsrm。

看这里:Active Directory 脚本:DSMOVE 失败

答案3

如果您是 Powershell 的粉丝,我建议您访问 www.quest.com 并使用其 Active Directory 工具套件。它们是免费的。

Active Directory 的 PowerShell 命令

Active Directory 的 ActiveRoles 命令行管理程序是一组 PowerShell 命令,可用于执行和自动执行管理任务,例如发现 AD 环境、更改用户属性、修改组成员身份、配置新用户帐户以及在 Active Directory 中执行其他多个任务。

相关内容