使用powershell禁用AD上长时间没有登录的用户账户和计算机账户

#Function: Disabale users who have not logged in more than 180 days
#Author: Junson142099
#Last Updated Date: July 7, 2021


#Search and disable users that have not been connected to AD for more than 180 days
echo 'Please make sure you are running this script as administrator!'
Import-Module ActiveDirectory

#Export a list to a text document
$x = Split-Path -Parent $MyInvocation.MyCommand.Definition
$curDateTime = Get-Date -Format yyyyMMdd-HHmmss
Get-ADUser -properties lastLogonDate -filter {enabled -eq "True"} -SearchBase "ou=users,ou=shenzhen,dc=junson,dc=com" | where { $_.lastLogonDate -lt (get-date).addmonths(-6)} | Out-File $x\DisableUsers$curDateTime.txt -NoClobber -Encoding Default

$yesNo = Read-Host -prompt 'Please find DisableUsers.txt and confirm that all the users in the list is what you want to disable, do you want to continue? Y/N: '
if ($yesNo -eq 'y'){

#Disable users in the list
#If you need to exclude some computers, you can add {-and name -ne "XXXUSER"} in the filter.
Get-ADUser -properties lastLogonDate -filter {enabled -eq "True"} -SearchBase "ou=users,ou=shenzhen,dc=junson,dc=com" | where { $_.lastLogonDate -lt (get-date).addmonths(-6)} | Disable-ADAccount
echo 'Disable completed!'
pause
Exit
}else{
echo 'Cancelled!'
pause
Exit
}
#Function: Disabale computers which have not logged in more than 90 days
#Author: Junson142099
#Last Updated Date: July 7, 2021


#Search and disable computers that have not been connected to AD for more than 90 days
echo 'Please make sure you are running this script as administrator!'
Import-Module ActiveDirectory

#Export a list to a text document
$x = Split-Path -Parent $MyInvocation.MyCommand.Definition
$curDateTime = Get-Date -Format yyyyMMdd-HHmmss
Get-ADComputer -properties lastLogonDate -filter {enabled -eq "True"} -SearchBase "ou=computers,ou=shenzhen,dc=junson,dc=com" | where { $_.lastLogonDate -lt (get-date).addmonths(-3)} | Out-File $x\DisableComputers$curDateTime.txt -NoClobber -Encoding Default

$yesNo = Read-Host -prompt 'Please find DisableComputers.txt and confirm that all the computers in the list is what you want to disable, do you want to continue? Y/N: '
if ($yesNo -eq 'y'){

#Disable computers in the list
#If you need to exclude some computers, you can add {-and name -ne "XXXPC"} in the filter.
Get-ADComputer -properties lastLogonDate -filter {enabled -eq "True"} -SearchBase "ou=computers,ou=shenzhen,dc=junson,dc=com" | where { $_.lastLogonDate -lt (get-date).addmonths(-3)} | Disable-ADAccount
echo 'Disable completed!'
pause
Exit
}else{
echo 'Cancelled!'
pause
Exit
}

脚本使用说明:

目的:此脚本的目的是为了禁用AD上那些距离上次登录超过180天的用户和超过90天的计算机账户。

1、先编辑脚本,修改你想查询和禁用的ou范围,现在以我的测试服务器为例,请务必保证两处的ou范围是一致的,否则导出的列表和实际禁用的账户可能会不一致。
在这里插入图片描述

2、在AD上以管理员方式运行此脚本,会自动生成一个txt文件,里面记录了本次查找出距离最后一次登录的超过180天的用户。请确认此列表里的用户都是你想要禁用的,如确认输入y,脚本会自动禁用这些用户。否则请输入n,并回到第一步修改查询范围或添加排除范围。
在这里插入图片描述

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
命令:dsquery http://technet.microsoft.com/en-us/library/cc755655.aspx 工具:oldcmp 使用OldCmp,你可以搜索、用或者删除非活动计算机账号。甚至更好的是,你可以创建一个简单的批处理文件来使这个过程自动化。当你用OldCmp来执行一个搜索的时候,你必须指定以下三种可能选项中的至少一种:-report(生成一张列有非活动计算机账号的HTML报告列表),-disable(用非活动计算机账号),-delete(删除非活动计算机账号)。如果你运行OldCmp时只加了-report选项,它会搜索你默认域中所有计算机密码老化日期大于90天的计算机对象,并且把结果生成为一个HTML报告。如果你的域非常大,并且里面有很多计算机账号,这条命令可能得花上一段时间来执行完毕。为了减少OldCmp的运行时间,你可以使用-b选项来指定一个特定的组织单元。OldCmp生成的HTML文件会被放到该工具的运行目录下,除非你用-file选项指定了一个替换位置。如果你包括了-sh选项,OldCmp会在生成HTML文件后自动打开它。如果你想定期地生成HTML报告,你所需要做地全部就是创建一个只包含两行代码的批处理(.bat)文件,如表1所示。其中第一行运行OldCmp,而第二行运行Blat。Blat是一个把文件内容通过电子邮件发送出去的工具,你可以从http://blat.net下载该工具。在第二行中,注意用-to选项设置你自己的电子邮件地址。另外,确认OldCmp和Blat都被放到了你的运行路径下(即在PATH环境变量中定义的路径)。建立了批处理文件之后,你需要创建一个计划任务。确认你为其指定了一个合适的域账号和密码,使该脚本有足够的权限在域中查询计算机对象。辨别非活动计算机账号很有帮助,但更可能的是,你有时候想清除那些账号。我的一般建议是先用那些非活动账号,然后经过一个星期或一个月的观察,再删除那些用了的账号。这样能保证确实没有人在使用我们删掉的那些账号。表2包含的批处理文件是用来删除用的计算机账号,以及用新发现的非活动计算机账号的。这个批处理文件有两段命令(注意不要交换次序)。第一段用OldCmp删除用了的计算机账号,并且创建deleted_comps.html报告,接着用Blat把该报告发送到[email protected]。第二段用OldCmp用所有计算机密码旧于180天的计算机账号,并且创建disabled_comps.html报告,接着用Blat发送该报告。在写OldCmp的时候,Joe考虑到人们可能会意外地删除或用数以千计的计算机账号,所以他加了一些预防措施,包括你所见到的在每个命令集中都有的-safety和-forreal选项。-safety选项用来限制脚本所能删除或者用的账号数量。默认情况下,OldCmp不会删除或用超过10个账号。若把-safety选项值设为100,则OldCmp最多可以删除100个账号。-forreal选项用来真正删除或者用账号。如果不用-forreal选项,OldCmp只会报告它要删除或用的账号,而不会真正地删除或者用它们。在使用表2中的批处理文件之前,你需要自定义在两行Blat命令中的电子邮件地址。此外切记,为了测试,你应该先去掉两行OldCmp命令中的-forreal选项,然后运行批处理文件来确定OldCmp将要删除或者用的账号无误。表1:建立非活动计算机账号报告的批处理文件oldcmp -report -file c:\inactive.htmlblat c:\inactive.html -to [email protected] -html表2:删除被用的计算机账号和用新发现的非活动计算机账号的批处理文件oldcmp -delete -onlydisabled -safety 100 -forreal -append -file c:\deleted_comps.htmlblat c:\deleted_comps.html -to [email protected] -htmloldcmp -disable -age 180 -safety 100 -forreal -append -file c:\disabled_comps.htmlblat c:\disabled_comps.html -to [email protected] -html
ADBulkAdmin工具用于批量管理AD帐户,可批量查看用户属性,批量新建用户和设置用户属性等,可以连接指定的域控,可将所有操作日志保存到Access数据库中。 详细信息请到http://www.usefulshare.com/adbulkadmin 查看。 软件运行要求: 1. 需要安装.NetFramework 4.0以上版本。 2. 需要安装Office 2007以上版本软件。 可进行如下批量操作: 1. 批量查看帐户信息:Check User。可按用户名,显示名称,邮箱地址,UPN等查询常用属性信息,如DisplayName, Name, SamAccountName, EmailAddress, LyncAddress, Company, Department, DN等。 2. 批量新建帐户:New User。 3. 批量重置密码:Reset Password。 4. 批量启用/用帐户:Xable User。 5. 批量删除帐户:Remove User。 6. 批量设置帐户属性:Set Properties。 7. 批量查询组信息:Check Group。 8. 批量添加帐户到组:Add to Group。 9. 批量从组中删除帐户:Remove from Group。 10. 可以连接指定域控,而无论本机是否加入域。 11. 可以导出结果数据。 12. 从OU中获得用户,从组中获得成员,显示所有用或锁定用户,按密码过期时间获得用户等。 13. 可测试用户是否使用简单密码。 14. 查看用户在所有域控上的锁定状态。 如果您使用的是32位Office,请运行ADBulkAdmin-v1.1.0.11 for 32bit Office中的程序;如果您使用的是64位Office,请运行ADBulkAdmin-v1.1.0.11 for 64bit Office中的程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值