如何自动实现本地AD中禁用的用户从地址列表中隐藏掉?

我的博客园:https://www.cnblogs.com/CQman/

如何自动实现本地AD中禁用的用户从地址列表中隐藏掉?

 

需求信息:

 

用户本地AD用户通过ADConnect同步到O365,用户想实现在本地已做同步的OU中禁用某一用户后,其可以自动实现把该用户从地址列表中隐藏掉。

 

用户的ADConnect同步工具装在域控服务器上。

 

解决方法:

 

思路概述:在本地中启用一个计划任务,在特定事件下触发运行powershell脚本,通过powershell命令检测本地AD中已禁用用户的enabled和msExchHideFromAddressLists属性值,并更改msExchHideFromAddressLists和mailnickname的属性值,然后使用Start-ADSyncSyncCycle -PolicyType Delta命令触发同步。

 

操作步骤:

  1. 复制一下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

 

  1. 在装有ADConnect同步工具的域控服务器上创建计划任务。

图形界面方式:

  1. 输入“msc”命令打开“Task Scheduler”控制面板。

  1. 打开“任务计划程序”,点击右边的“创建基本任务”。

  1. 填写名称及描述信息

  

  1. 当禁用AD用户时,在本地的域控制器上会触发一个事件日志

  

  1. 选择触发类型

  

  1. 填写Log、Source、EventID

Log: Security

Source: Microsoft Windows security auditing

Event ID : 4725

  

  1. 选择操作类型

  

  1. “程序或脚本”这里要填写Powershell程序的路径,如图中地址;在“添加参数”,这里需要写上:C:\automatically_hide_address_list.ps1 在起始项中填写脚本所在文件夹路径

  

  1. 勾选图中位置选项,点击下一步。

  

  1. 用户那里要使用Administrator管理员权限,这个权限最大,不容易出现:权限不足的报错。勾选“不管用户是否登录都要运行”和“使用最高权限运行”。

  

  1. 输入管理员密码

  

  1. 创建完成后就可以在计划任务面板中看到该计划。

  

备注:正常情况下我们的任务计划执行后会有反馈数值:

    • 代码 0 或 0x0:操作成功完成。
    • 代码 1 或 0x1:调用的函数不正确或调用了未知函数。
    • 代码 10 或 0xa:环境不正确。
    • 代码 0x8009000f:常规访问被拒绝

 

  13. 效果验证

  禁用前

  

  

  禁用后

  禁用T23用户,触发系统安全事件日志

  

  计划任务也自动触发并成功执行。

  

  检查用户的mailnickname和msExchHideFromAddressLists属性值均发生更改。

  

  

  云端O365中的用户已经被Blocked

  

  查看Exchange用户中的Hide address list

  

 

热门相关:赠我深爱如长风   豪门退婚妻:宝贝,再嫁我一次!   校花之贴身高手   美漫之大冬兵   史上最强赘婿