很久沒更新了,最近在搞些linux方面的事情,powershell也就耽誤了,更新個整理活動目錄的腳本,供各位參考指正。linux
需求:shell
1、加域的計算機和人員要移動到對應分公司的OU(每一個OU組策略有區別)windows
2、刪除密碼過時超過一年的用戶ide
3、刪除禁用帳戶測試
關鍵字:move-adobjectui
實現:windows計劃任務按期執行spa
後期維護:按期看一下 執行返回值便可3d
<# .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 } }
加入計劃任務當中,按照我這樣設置server
注意點:對象
1、運行級別帳戶請使用系統帳號,若是你用了本身的,萬一你哪天離職,帳戶被刪除,那計劃任務就不能啓動了。
2、並非腳本以後就徹底不用管了,仍是要按期看一下任務返回值來判斷是否執行成功,或者手動上去看看對象是否都在正確的位置。
運行有小半年了,沒問題,奉獻給你們,對組織規模大的公司比較有用,省了我很多時間。但願能幫到您。