如何自动实现本地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

相关推荐
CQman4 个月前
如何通过PowerShell批量修改O365用户的office phone属性值
exchange online