怎么利用PowerShell脚本统计域内不活跃账号并执行自动清理

落墨同学_3275

落墨同学_3275

2026-05-06

784人浏览

原创

PowerShell是域环境账号治理的高效工具,需通过LastLogonTimestamp识别长期未登录且非系统/服务的启用账户,过滤高权限、密码永不过期、关键词描述及特定OU账户,分阶段执行禁用、通知、观察、归档、删除,并辅以日志审计与自动化调度。

powershell 是域环境账号治理的高效工具,统计并清理不活跃账号的关键在于准确识别“长期未登录”且“非系统/服务账户”的对象,再结合安全策略审慎清理。核心逻辑是:查 lastlogontimestamp(兼顾多域控复制延迟)、过滤掉禁用账号和关键账户、设置合理不活跃阈值(如90/180天),最后执行禁用(推荐)或删除(需严格审批)。

一、精准识别不活跃账号(基于LastLogonTimestamp)

Active Directory 中 LastLogonTimestamp 是跨域控同步的近似最后登录时间(默认滞后14天,可调整),比单台域控的 LastLogon 更适合全林统计。需注意它不更新已禁用账户,也不包含服务登录(如计算机账户登录)。

  • 使用 Get-ADUser 查询启用状态、最后登录时间、密码是否永不过期、是否为关键账户
  • 排除计算机账户(ObjectClass -eq 'user' 已隐含)、内置账户(如 Administrator、krbtgt)、以及明确标记为服务账户的(可通过 Description 或自定义属性识别)
  • 示例筛选条件:-Filter {(Enabled -eq $true) -and (LastLogonTimestamp -lt $cutoffDate) -and (PasswordNeverExpires -eq $false)}

二、安全过滤关键与例外账户

直接批量删/禁用高权限或系统依赖账户风险极高。必须人工或脚本化排除以下类型:

  • Domain Admins、Enterprise Admins、Schema Admins 等高权限组成员(用 Get-ADPrincipalGroupMembership 检查)
  • 密码永不过期且 LastLogonTimestamp 为空的账户(可能是刚创建未登录,或服务账户)
  • Description 字段含 “service”、“svc”、“monitoring”、“backup” 等关键词的账户(建议提前统一规范命名)
  • OU 路径在 “Service Accounts”、“Managed Service Accounts” 下的对象(按组织单位隔离更可靠)

三、分阶段执行:先禁用,再归档,最后删除

生产环境严禁脚本直删账号。标准流程应为:禁用 → 邮件通知 → 观察期(如30天)→ 归档信息 → 删除。

昇思MindSpore
昇思MindSpore

昇思MindSpore是一款AI学习资源工具,华为开源的自研AI深度学习框架。

下载
  • 禁用命令:Disable-ADAccount -Identity $user.SamAccountName,同时用 Set-ADUser 添加注释(如“Inactive since $(Get-Date)”)便于追溯
  • 导出待处理清单到 CSV:$inactiveUsers | Select-Object Name,SamAccountName,LastLogonTimestamp,Description,DistinguishedName | Export-Csv -Path "C:\Reports\Inactive_$(Get-Date -Format 'yyyyMMdd').csv" -NoTypeInformation
  • 若需自动发通知,可用 Send-MailMessage 向管理员或账户所属部门邮箱发送汇总报告(勿发给本人,因账号可能已失效)

四、自动化调度与日志审计

将脚本部署为 Windows 定时任务(Task Scheduler),每周运行一次;所有操作必须记录详细日志,满足合规要求。

  • 日志至少包含:执行时间、处理用户数、禁用账号列表、跳过的例外账户及原因
  • 使用 Start-Transcript + Stop-Transcript 记录完整控制台输出,或写入自定义日志文件(含时间戳)
  • 定时任务建议以专用低权限服务账户运行(仅赋予 OU 内读取+禁用权限),避免使用 Domain Admin
  • 首次运行前务必在测试 OU 小范围验证,并备份 AD(ntdsutil 或 Windows Server 备份)

不复杂但容易忽略的是时间阈值设定和例外管理——90天是常见起点,但需结合企业安全策略调整;而真正降低风险的,不是脚本多强大,而是过滤逻辑够不够细、日志够不够全、回滚方案够不够快。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

shell脚本

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 网络安全
Java 网络安全

本专题聚焦 Java 在网络安全与加密通信中的应用,系统讲解常见加密算法(MD5、SHA、AES、RSA)、数字签名、HTTPS证书配置、令牌认证(JWT、OAuth2)及常见安全漏洞防护(XSS、SQL注入、CSRF)。通过实战项目(如安全登录系统、加密文件传输工具),帮助学习者掌握 Java 安全开发与加密技术的实战能力。

2025.10.13

5225

12

PHP 安全与防护
PHP 安全与防护

本专题聚焦于PHP开发中的安全问题与防御措施,详细讲解SQL注入、XSS攻击、CSRF攻击、文件包含漏洞等常见安全风险及其修复方法。通过结合实际案例,帮助开发者理解漏洞成因,掌握输入验证、会话安全、加密存储与安全编码规范,全面提升PHP网站的安全防护水平。

2025.11.04

455

21

DBeaver怎么导入数据
DBeaver怎么导入数据

DBeaver数据导入专题,整理Excel、CSV、SQL、TXT等常见文件的数据导入方法,涵盖目标数据库选择、数据表创建、字段映射、数据类型设置及导入参数配置等操作,帮助用户将本地文件中的数据写入数据库,并了解批量导入、重复数据处理和导入失败等常见问题的解决方法。

2026.11.05

0

12

DBeaver安全防护教程大全
DBeaver安全防护教程大全

DBeaver安全防护专题,围绕数据库连接安全、账号密码保护和访问权限管理展开,整理SSL/TLS加密连接、SSH隧道、数据库凭据保存及证书验证等配置方法,同时介绍敏感信息保护、远程连接风险和高权限账号使用等注意事项,帮助用户提高数据库日常管理的安全性。

2026.11.05

0

12

DBeaver连接创建与配置教程
DBeaver连接创建与配置教程

本专题聚焦DBeaver数据库连接配置与管理,覆盖从新建连接、选择数据库类型到填写连接参数和验证连接的完整流程。针对MySQL、PostgreSQL、SQL Server等常见数据库,整理相应的连接设置方法,并提供驱动缺失、认证失败和连接异常等问题的排查方向。

2026.11.04

0

16

XORM框架结构体映射与表结构同步
XORM框架结构体映射与表结构同步

本专题围绕XORM框架的结构体映射展开,说明表名与字段的命名策略、xorm标签常用属性、主键自增与时间字段自动填充,并演示Sync2自动建表、增量字段升级、索引声明与反向生成结构体的完整流程。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

15

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

XORM框架安装配置与数据库连接
XORM框架安装配置与数据库连接

本专题聚焦XORM框架的配置与连接环节,拆解MySQL、PostgreSQL、SQLite、SQL Server的DSN写法与驱动选择,讲清连接池参数、多数据源拆分、读写分离与超时重连的处理方式,并补充容器与兼容数据库的适配经验。

2026.11.04

0

16

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
尚观shell视频教程
尚观shell视频教程

共8课时 | 1.9万人学习

Linux开发视频教程
Linux开发视频教程

共18课时 | 4.7万人学习

Perl 入门教程
Perl 入门教程

共29课时 | 31.5万人学习