需求

需求为清理AD中过期的帐号,本打算是直接清理90天未登录的帐号就可以了,结果领导又担心如果一些长期出差在外的人员怎么办,所以后面加了一个30天的邮箱判定,如果这个人90天未登录域,又30天未登录邮箱,那应该是可以清的了

操作

直接上正文,里面有注释

#加域AD模块
Import-Module ActiveDirectory
#加载Exchange模块
Add-PSSnapin Microsoft.Exchange.Management.Powershell.E2010
#定义90天的值
$When1 = (Get-Date).AddDays(-90).ToFileTime()
#定义30天的时间值
$When2 = (Get-Date).AddDays(-30).Date
#提取出超过90天未登录域的计算机列表
$PC = Get-ADComputer -Filter {LstLogontimeStamp -lt $When1 } -SearchBase "OU=test01,DC=dztest,DC=com"
#禁用并移动过期计算机帐号
$PC | Set-ADObject -ProtectedFromAccidentalDeletion:$false | Disable-ADAccount | Move-ADObject -ErrorAction SilentlyContinue -TargetPath "OU=Test02,DC=dztest,DC=com"
#获取超过90天未登录域的用户列表
$user = Get-ADUser -Filter {LastLogonTimeStamp -lt $When1} -SearchBase "OU=test01,DC=dztest,DC=com" -Properties * | Select-Object Name,SamAccountName,Mail
#筛选出没有邮箱的用户
$user1 = $user | where{$_.mail -eq $null}
#筛选出有邮箱的用户
$user2 = $user | where{$_.mail -ne $null}
#直接将没有邮箱的用户移动到指定的OU中并禁用
$user1 | Set-ADObject -ProtectedFromAccidentalDeletion;$false | Disable-ADAccount | Move-ADObject -ErrorAction SilentlyContinue -TargetPath "OU=test02,DC=dztest,DC=com" 
#在结果中筛选出超过30天未登录邮箱的用户
$Euser = $user2.mail | Get-MailboxStatistics | Where-Object {$_.lastlogontime -lt $when2} | Select-Object DisPlayName,LastLogontime
#反查AD帐号信息
$user3 = $euser.displayname | Get-Mailbox | Select Name,SamAccountName
#将结果用户移动到指定的OU并禁用
$user3 | Set-ADObject -ProtectedFromAccidentalDeletion:$false | Disable-ADAccount |  Move-ADObject -ErrorAction SilentlyContinue -TargetPath "OU=test02,DC=dztest,DC=com"
#将超过90天未登录域且无邮箱的对象,或超过90天未登录到域,且超过30天未登录邮箱的用户操作结果发邮件给管理员
#发件人
$from = "test01.dztest.com"
#收件人
$to = "524990799@qq.com"
#抄送,如密送可以用BCC
#$cc = ""
#SMTP服务器地址
$smtp = "mail.dztest.com"
#邮件主题
$subject = "Powershell Send Mail Test"
#邮件正文
$body = "
此次禁用超过90天未登录域且无邮箱用户为:
$($user1 | Out-String)
此次禁用超过90天未登录域且30天未登录邮箱用户为:
$($user3 | Out-String)
"
#附件
#$p_w_upload = "e:\1.txt"
安全凭证
secpasswd = ConvertTo-SecureString "password" -AsPlainText -Force
mycreds = New-Object System.Management.AutoMation.PSCredential ($from,$secpasswd)
#发送邮件
Send-MailMessage -To $to -From $from -Subject $subject -Body $body -Credential $mycreds -SmtpServer $smtp -DeliveryNotificationOption Never -Encoding UTF8

总结

如有其他疑问,欢迎提出

转载于:https://blog.51cto.com/duwei025/1710281

清理AD过期对象,并将结果发送给指定管理员相关推荐

  1. 清除AD过期的帐户和计算机

    公司的域运行到现在,已经超过了3年,在使用的过程中,不断往里面添加用户账户和计算机账户,中途经常发生电脑系统坏掉,重装系统的事情,最要命的是电脑命名规则该了好几次,所以,在计算机这个容器里面,同一台电 ...

  2. 如何正确清理Excel互操作对象?

    我在C#( ApplicationClass )中使用Excel互操作,并将以下代码放在我的finally子句中: while (System.Runtime.InteropServices.Mars ...

  3. 域用户指定计算机,什么是AD域,如何设置AD域用户仅登录到指定的计算机

    什么是AD域? 简单理解:Active Directory域内的directory database(目录数据库)是被用来存储用户账户.计算机账户.打印机和共享文件夹等对象,而提供目录服务的组件就是A ...

  4. 【Web技术】网站留言系统开发,及留言信息实时发送至指定邮箱

    [Web技术]网站留言系统开发,及留言信息实时发送至指定邮箱 关键字:HTML PHP JavaScript CSS 文章目录 [Web技术]网站留言系统开发,及留言信息实时发送至指定邮箱 0 简述 ...

  5. php公众号批量推送,微信公众号文章如何批量发送给指定的用户

    微信公众号文章如何批量发送给指定的用户 导读:小编根据大家的需要整理了一份关于<微信公众号文章如何批量发送给指定的用户>的内容,具体内容:微信公众号的文章群发的时候,会发给所有的用户,但是 ...

  6. iPhone上将短信内容发送到指定邮箱的方法

    iPhone上将短信内容发送到指定邮箱的方法 迄今为止,移动应用安全基本聚焦在以下几个方面,一是移动设备管理BYOD(bring your own device),二是移动恶意软件分析,三是移动设备用 ...

  7. Boost:构造一个流对象,任何发送到此流将标准输出

    Boost:构造一个流对象,任何发送到此流将标准输出 实现功能 C++实现代码 实现功能 构造一个流对象,任何发送到此流将标准输出 C++实现代码 #include "zfstream.h& ...

  8. mysql 自动备份发送,Centos定时自动备份MySQL数据库并发送至指定邮箱

    在Centos中使用Cron定时自动备份mysql数据库并通过Mutt发送到指定Gmail邮箱,利用Gmail垃圾邮件策略实现定时删除 { No.1 编写Shell 文件 } // Path /roo ...

  9. b站视频详情数据抓取,自动打包并发送到指定邮箱(单个或者群发)

    BiLiBiLi Time: 2020年11月6日19:44:58 Author: Yblackd BiLiBiLi BiLiBiLi 介绍 软件架构 安装教程 使用说明 源码下载 BiLiBiLi ...

最新文章

  1. Python 技术篇-3行代码搞定图像文字识别,pytesseract库实现
  2. spring security oauth2 架构---官方
  3. 今天刚刚开通了写播客的功能,以后记录工作学习的点点滴滴
  4. python获取get请求的耗时时间_突破python爬取极限,超牛逼的异步协程爬虫
  5. 计算机地址栏搜索不了网,我的电脑地址栏不见了怎么办 地址栏不见了如何解决...
  6. 深入理解javascript之原型和原型链
  7. 白月黑羽教python_白月黑羽Python在线教程
  8. 以太坊合约24小时新增2.44万ETH
  9. 面试准备每日五题:C++(十)——mapset、set查找、迭代器实现、set低层原理
  10. HTML+CSS制作一个动画
  11. leadbbs 上ID为Robin·H的东西,有空瞧瞧....
  12. MarkDown的下载、安装和基础使用
  13. 在线二进制取余计算机,二进制转十进制和十六进制计算器
  14. 输入上下文句柄相关函数 linux,一起聊聊WSL的那些事儿(上)
  15. win10 C盘右边是OEM分区扩容的解决办法
  16. Mybatis 官网地址
  17. 为什么贝叶斯统计如此重要?
  18. bno055传感器数据不更新_博世传感器BNO055智能9轴 的绝对方向传感器
  19. 如何进行 Linux 服务器安全维护
  20. oracle rac 心跳参数 misscount disktimeout

热门文章

  1. oracle性能优化总结
  2. 用MySQL创建“江湖”数据库
  3. ivew 封装删除 对话框
  4. 截图工具当前未在计算机运行
  5. 用神经网络解释化学键能 化学键的键能:一个方程组的特征解
  6. IBMX60笔记本装LINUX,《如何安装Storage Manager管理软件客户端并调IBM DS系列存储.doc...
  7. 4.5 偏斜类-机器学习笔记-斯坦福吴恩达教授
  8. java各种包的用途
  9. 【LTE】LTEMIMO系统的MATLAB仿真
  10. 2.Vivado软件基础操作