如何自动实现本地AD中禁用的用户从地址列表中隐藏掉?
我的博客园:https://www.cnblogs.com/CQman/
如何自动实现本地AD中禁用的用户从地址列表中隐藏掉?
需求信息:
用户本地AD用户通过ADConnect同步到O365,用户想实现在本地已做同步的OU中禁用某一用户后,其可以自动实现把该用户从地址列表中隐藏掉。
用户的ADConnect同步工具装在域控服务器上。
解决方法:
思路概述:在本地中启用一个计划任务,在特定事件下触发运行powershell脚本,通过powershell命令检测本地AD中已禁用用户的enabled和msExchHideFromAddressLists属性值,并更改msExchHideFromAddressLists和mailnickname的属性值,然后使用Start-ADSyncSyncCycle -PolicyType Delta命令触发同步。
操作步骤:
- 复制一下powershell 命令,把OU=G10,DC=ttt,DC=com更改为自己的Active Directory路径并保存为一个Powershell脚本文件。
Set-Executionpolicy -executionPolicy Unrestricted -force
Get-ADUser -Filter {(enabled -eq "false") -and (msExchHideFromAddressLists -notlike "*")} -SearchBase "OU=G10,DC=ttt,DC=com" -Properties msExchHideFromAddressLists `
| % { Set-ADUser -Identity $_.samaccountname -Replace @{msExchHideFromAddressLists=$true} ;Set-ADUser -Identity $_.samaccountname -Replace @{mailnickname="$($_.samaccountname)"} }
Start-ADSyncSyncCycle -PolicyType Delta
- 在装有ADConnect同步工具的域控服务器上创建计划任务。
图形界面方式:
- 输入“msc”命令打开“Task Scheduler”控制面板。
- 打开“任务计划程序”,点击右边的“创建基本任务”。
- 填写名称及描述信息
- 当禁用AD用户时,在本地的域控制器上会触发一个事件日志
- 选择触发类型
- 填写Log、Source、EventID
Log: Security
Source: Microsoft Windows security auditing
Event ID : 4725
- 选择操作类型
- “程序或脚本”这里要填写Powershell程序的路径,如图中地址;在“添加参数”,这里需要写上:C:\automatically_hide_address_list.ps1 在起始项中填写脚本所在文件夹路径
- 勾选图中位置选项,点击下一步。
- 用户那里要使用Administrator管理员权限,这个权限最大,不容易出现:权限不足的报错。勾选“不管用户是否登录都要运行”和“使用最高权限运行”。
- 输入管理员密码
- 创建完成后就可以在计划任务面板中看到该计划。
备注:正常情况下我们的任务计划执行后会有反馈数值:
-
- 代码 0 或 0x0:操作成功完成。
- 代码 1 或 0x1:调用的函数不正确或调用了未知函数。
- 代码 10 或 0xa:环境不正确。
- 代码 0x8009000f:常规访问被拒绝
13. 效果验证
禁用前
禁用后
禁用T23用户,触发系统安全事件日志
计划任务也自动触发并成功执行。
检查用户的mailnickname和msExchHideFromAddressLists属性值均发生更改。
云端O365中的用户已经被Blocked
查看Exchange用户中的Hide address list