首页 > 代码库 > 自动化管理活动目录中对象

自动化管理活动目录中对象

     好久没更新了,最近在搞些linux方面的事情,powershell也就耽误了,更新个整理活动目录的脚本,供各位参考指正。

需求:

一、加域的计算机和人员要移动到对应分公司的OU(每个OU组策略有区别)

二、删除密码过期超过一年的用户

三、删除禁用账户

关键字:move-adobject

实现:windows计划任务定期执行

后期维护:定期看一下 执行返回值即可


<#	
	.NOTES
	===========================================================================
	 Created with: 	SAPIEN Technologies, Inc., PowerShell Studio 2014 v4.1.63
	 Created on:   	2014/9/4 10:10
	 Created by:   	xing_ji
	 Organization: 	
	 Filename:     	
	===========================================================================
	.DESCRIPTION
		A description of the file.
#>
$host.UI.RawUI.WindowTitle = "move-adobject edit by xing_ji"
Import-Module ActiveDirectory
#移动计算机对象
$userpath = ‘OU=Standard_Computer,OU=CN_Computer,DC=cn,DC=synnex-grp,DC=com‘
$serverpath= ‘OU=Synnex_Server,OU=CN_Computer,DC=cn,DC=synnex-grp,DC=com‘
$temppath = ‘OU=Temp,OU=Standard_Computer,OU=CN_Computer,DC=cn,DC=synnex-grp,DC=com‘
$allcomputer=Get-ADComputer -SearchBase ‘CN=Computers,DC=cn,DC=synnex-grp,DC=com‘ -Filter *
foreach ($computer in $allcomputer)
{
 #因公司计算机标准名称为 四位英文+5位流水号
        if ($computer.name -match "\d{5}$"){
       move-adobject -Identity $computer.distinguishedName -TargetPath $userpath
      		}
 #将一些测试主机排除 含TES字眼
	    elseif ($computer.name -match "\D\d{2}$" -and $computer.name -notlike "*TES*"){
	   Move-ADObject -Identity $computer.distinguishedName  -TargetPath $serverpath
             }
        else {
       Move-ADObject -Identity $computer.distinguishedName  -TargetPath $temppath
       }	
}

<#删除过期超过300天用户,删除账户有风险,所以这段我注释了,需要的取消注释即可
$disableusers=Get-ADUser -Filter ‘PasswordNeverExpires -eq "false" -and enabled -eq "true"‘ |ForEach{$_.name}
foreach ($disableuser in $disableusers){
$passwordlastset=Get-ADUser -Identity $disableuser -Properties * | foreach{$_.passwordlastset}
$pwdlastday=($passwordlastset).adddays(90)
$now=get-date
$expire_day=($pwdlastday - $now).days
if ($expire_day -le -300){
Remove-ADUser -Identity $disableuser -Confirm:$false 
}
}#>

#删除禁用帐户,系统内置账号记得保留,我这里保留了 guest\krbtgt等,按您需求
#Get-ADUser -Filter ‘enabled -eq "false" -and name -notlike "Guest" -and name -notlike "smartit" -and name -notlike "SUPPORT_388945a0" -and name -notlike "krbtgt"‘|Remove-ADUser

#移动AD用户,用switch更加明晰。
$cspath=‘OU=CS,OU=East,OU=Synnex_User,OU=CN_User,DC=cn,DC=synnex-grp,DC=com‘
$hfpath=‘OU=HF,OU=East,OU=Synnex_User,OU=CN_User,DC=cn,DC=synnex-grp,DC=com‘
$hzpath=‘OU=HZ,OU=East,OU=Synnex_User,OU=CN_User,DC=cn,DC=synnex-grp,DC=com‘
$nbpath=‘OU=NB,OU=East,OU=Synnex_User,OU=CN_User,DC=cn,DC=synnex-grp,DC=com‘
$ncpath=‘OU=NC,OU=East,OU=Synnex_User,OU=CN_User,DC=cn,DC=synnex-grp,DC=com‘


$alluser = Get-ADUser -SearchBase ‘OU=_Adjust,OU=CN_User,DC=cn,DC=synnex-grp,DC=com‘ -Filter * -Properties *
foreach ($user in $alluser)
{
	if ($user.displayname -match ‘_CS‘)
	{
		Move-ADObject -Identity $user.distinguishedName  -TargetPath $cspath
	}
elseif ($user.displayname -match ‘_HF‘){
		Move-ADObject -Identity $user.distinguishedName  -TargetPath $hfpath
}
elseif ($user.displayname -match ‘_HZ‘)
	{
		Move-ADObject -Identity $user.distinguishedName  -TargetPath $hzpath
	}
elseif ($user.displayname -match ‘_NB‘)
	{
		Move-ADObject -Identity $user.distinguishedName  -TargetPath $nbpath
	}
elseif ($user.displayname -match ‘_NC‘)
	{
		Move-ADObject -Identity $user.distinguishedName  -TargetPath $ncpath
	}

}



加入计划任务当中,按照我这样设置

注意点:

一、运行级别账户请使用系统账号,如果你用了自己的,万一你哪天离职,账户被删除,那计划任务就不能启动了。

二、并不是脚本之后就完全不用管了,还是要定期看一下任务返回值来判断是否执行成功,或者手动上去看看对象是否都在正确的位置。

wKiom1R2k2qyUdemAAJyHV76Jbg118.jpg

wKioL1R2k-7yqIufAAHrLlQUb4k780.jpg

wKioL1R2k--AcgDKAANiRyB9xZA874.jpg


运行有小半年了,没问题,奉献给大家,对组织规模大的公司比较有用,省了我不少时间。希望能帮到您。



本文出自 “杂谈” 博客,请务必保留此出处http://jixing.blog.51cto.com/821242/1583111

自动化管理活动目录中对象