我的博客园: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

  

如何自动实现本地AD中禁用的用户从地址列表中隐藏掉?的更多相关文章

  1. Delphi for iOS开发指南(6):在iOS应用程序中使用ComboBox组件来从列表中选择某一项

    http://blog.csdn.net/delphiteacher/article/details/8924110 Delphi for iOS开发指南(6):在iOS应用程序中使用ComboBox ...

  2. chmod a+w . 权限控制 su、sudo 修改文件所有者和文件所在组 添加用户到sudoer列表中 当前用户信息

    对当前目录对所有用户开放读写权限 chmod a+r . $ sudo chmod -R a+w /usr/lib/python2.7 所有用户添加文件的写权限 [linux]su.sudo.sudo ...

  3. 在ASP.Net环境中,当用户点击报表中的超链接时如何调用Java Script方法?

    问题描述:在ASP.Net环境中,当用户点击报表中的超链接时如何调用Java Script方法? 问题解答: 你可以在TextObject.Hyperlink对象中编写js代码(javascript: ...

  4. AWT提供了Java Applet 和Java Application中可用的用户图形界面 GUI 中的基本组件

    AWT提供了Java Applet 和Java Application中可用的用户图形界面 GUI 中的基本组件( component s). 由于Java是一种独立于平台的 程序设计语言 ,但GUI ...

  5. 在 Excel 中如何使用宏示例删除列表中的重复项

    概要:在 Microsoft Excel 中,可以创建宏来删除列表中的重复项.也可以创建宏来比较两个列表,并删除第二个列表中那些也出现在第一个(主)列表中的项目.如果您想将两个列表合并在一起,或者如果 ...

  6. 【转】使用JavaParser获得Java代码中的类名、方法形参列表中的参数名以及统计总的文件个数与不能解析的文件个数

    遍历目录查找Java文件: public static void ergodicDir(File dir, HashSet<String> argNameSet, HashSet<S ...

  7. 在Linux中怎么把用户添加到组中

    (1)添加用户test,初始密码123456,该用户的主目录为/home/share,用户的基本组为root,用户的shell为/bin/tcsh,要求将该用户加到mail和new组中.请问该怎么做啊 ...

  8. 布尔上下文,这里misreading返回的是来源列表中元素的个数,如果列表中2个值都是undef,则列表元素个数是1: while( $misreading = (my $test_consideration, my $english_pragma) = each %map_function){

    布尔上下文,这里misreading返回的是来源列表中元素的个数, 列表赋值运算的值将会是来源列表中元素的个数,空列表表示0,如果列表中2个值都是undef,则列表元素个数是1 布尔上下文,这里mis ...

  9. Python对列表中字典元素排序

    问题起源 json对象a,b a = '{"ROAD": [{"id": 123}, {"name": "no1"}]} ...

  10. for循环删除列表中元素遇到的漏删的问题(python)

    问题描述:python中通过for循环来删除列表中的两个相邻的元素,存在漏删的问题 比如说下面的例子,准备删掉2和3,但是结果是2删掉了,3没删掉 是因为把2删掉后3的下标就变成了1,但是原本下标为1 ...

随机推荐

  1. 7.13早考试总结(NOIP模拟13)[工业题·卡常题·玄学题]

    人的记忆本来就是暧昧的,不值得信任. 前言 又是令人头疼的数学部分..还是太菜了.. 晚上还有一场,当场裂开. T1 工业题 解题思路 首先,这个题的暴力还是非常好像的,直接按照题目要求码就好了. 对 ...

  2. Canny边缘检测实现(Opencv C++)

    Canny边缘检测是Canny在1986年提出来的,目前仍是图像边缘检测算法中最经典.先进的算法之一.canny方法基于如下三个基本目标: 1. 低错误率:所有边缘都应被找到,并且不应有虚假响应. 2 ...

  3. 穿透 wsl 和 ssh, 新版本 neovim 跨设备任意复制,copy anywhere!

    获得更好的阅读体验,欢迎查看原文:穿透 wsl 和 ssh, 新版本 neovim 跨设备任意复制,copy anywhere! 1. 创作动机 最近一个星期,我入坑了 neovim, 然后开始配置各 ...

  4. uni-app mpvue wepy websocket的介绍

    uni-app 网址:https://uniapp.dcloud.io/ uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一套代码,可发布到iOS.Android.H5.以 ...

  5. kettle从入门到精通 第五十三课 ETL之kettle MQTT/RabbitMQ producer 实战

    1.MQTT介绍 MQTT (Message Queuing Telemetry Transport) 是一种轻量级的消息传输协议,设计用于连接低带宽.高延迟或不可靠网络的设备. MQTT 是基于发布 ...

  6. 让Easysearch运行在Kylin V10 (Lance)-aarch64上

    简介 本文主要介绍在国产操作系统 Kylin V10 (Lance)-aarch64 上安装单机版 Easysearch/Console/Agent/Gateway/Loadgen 系统配置 在安装之 ...

  7. 如何基于R包做GO分析?实现秒出图

    GO分析 基因本体论(Gene Ontology, GO)是一个用于描述基因和基因产品属性的标准术语体系.它提供了一个有组织的方式来表示基因在生物体内的各种角色.基因本体论通常从三个层面对基因进行描述 ...

  8. java把时间戳转换成时间_(转)java时间与时间戳互转

    java中时间精确到毫秒级,所以需求时间需要 除以1000 //将时间转换为时间戳 public static String dateToStamp(String s) throws Exceptio ...

  9. 什么是spring框架?

    spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,是一个分层的javaEE一站式轻量级开源框架

  10. IDEA生成类和方法注释模板详细说明 绝对好用

    吐槽 今天心血来潮,将使用了很久的IDEA旗舰版卸载了,想换社区版用一段时间,毕竟社区版开源免费.精简不卡顿,如果够用的话以后就省去了破解的烦恼,而且可以紧跟官网使用最新版 旧的IDEA配置忘记保存了 ...