Netwrix 1Secure 提供跨数据和身份的统一可见性——免费试用14天,享有完全访问权限。开始免费试用

资源中心博客

如何使用 PowerShell 禁用不活动的用户帐户

如何使用 PowerShell 禁用不活动的用户帐户

Mar 17, 2023

不活动 Active Directory(AD)用户帐户可能会给组织带来安全风险,例如:前员工在离开公司数月后仍保留处于活动状态的帐户,因为人力资源部门未能通知 IT;或者可能为特定目的创建了帐户,但在事件发生后从未删除。无论此类帐户存在的原因是什么,Active Directory 都可能迅速失去控制,从而使系统更难审计、也更不安全。

用于 PowerShell 的 Active Directory 模块

用于 Active Directory 的 PowerShell 模块允许系统管理员查询 Active Directory,并使用查询结果数据生成报告。PowerShell 的 AD 模块默认安装在 Windows Server 2012 域控制器上;或者你也可以下载 Remote Server Administration Tools (RSAT) for Windows 8.1 ,然后使用下面的命令安装该模块。

使用本地管理员身份登录,打开 PowerShell 提示符,输入以下代码并按 ENTER,即可安装 PowerShell 的 AD 模块:

      Install-WindowsFeature RSAT-AD-PowerShell
      

在 Active Directory 中查找不活跃账户

Search-ADAccount cmdlet 提供了一种便捷的方式,用于查询 Active Directory 中不活跃的用户账户:

      Search-ADAccount –UsersOnly –AccountInactive
      
PowerShell output for inactive 'Guest' and 'krbtgt' accounts, both showing 'Enabled: False' and 'PasswordNeverExpires: True'.

上述命令会返回所有不活跃账户。若要将结果缩小到特定的时间范围,可以为 –TimeSpan 参数添加到 Search-ADAccount 中。在下面的示例中,变量用于定义 –TimeSpan 参数的值,并使用 New-Timespan cmdlet 来简化输入:

      $timespan = New-Timespan –Days 90 Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan
      

此外,你也可以指定 –DateTime 参数,以返回自给定日期以来一直处于非活动状态的账户。在下面的命令中,自 2014 年 5 月 5 日之后一直未处于活动状态的账户会被返回:

      Search-ADAccount –UsersOnly –AccountInactive -DateTime ‘5/20/2014’
      

要获取关于账户更易于理解的信息,请将结果管道传递给 Get-ADUser cmdlet,然后使用 Select 选择要在输出中显示的列:

      Search-ADAccount –UsersOnly –AccountInactive | Get-ADuser -Properties Department,Title | Select Name,Department,Title,DistinguishedName
      
Image

结果还可以按指定字段进行排序,例如在本例中按 LastLogOnDate 属性排序。该属性源自 LastLogonTimestamp ,并转换为可读的格式:

      Search-ADAccount –UsersOnly –AccountInactive | Get-ADuser -Properties Department,Title | Sort LastLogOnDate | Select Name,Department,Title,DistinguishedName
      

需要注意的是,与 LastLogOn 属性不同,LastLogonTimestamp 在域控制器之间会进行同步,但可能会滞后 9 到 14 天。因此,在处理结果时应考虑到这一点。

另一种简化输出并统计非活动用户数量的方法,是将结果管道传递给 Measure cmdlet:

      Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan | Measure
      

与任何其他 PowerShell cmdlet 一样,结果可以通过管道传输到 Out-GridView,或者写入逗号分隔文件,以便将结果导入到 Excel。

      Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan | Out-GridView
      

禁用非活动帐户

一旦你获得了所需的结果集,接下来只需将其通过管道传输到以下 Disable-ADAccount cmdlet(如图所示)即可禁用这些帐户:

      Search-ADAccount –UsersOnly –AccountInactive –TimeSpan $timespan | Disable-ADAccount
      

Netwrix Auditor 包含在所有受支持的 Windows 版本中检测并禁用非活动用户帐户的能力;同时,结果会集成到产品的数据库、报表和通知功能中,从而无需单独运行和维护额外脚本。 Netwrix Auditor 可以禁用非活动帐户、设置随机密码、将帐户移动到指定的组织单元(OU),或删除这些帐户。

现在轮到你在下面的投票中留下你的意见了。请记住,只有一个正确答案!

分享到

了解更多

关于作者

Asset Not Found

Russell Smith

IT 顾问

专注于管理与安全技术的 IT 顾问和作者。Russell 拥有超过 15 年的 IT 经验,撰写过一本关于 Windows 安全的书籍,并共同撰写了 Microsoft 官方学术课程(MOAC)系列的相关教材。