在AD域的管理中,OU通常是企業中部門成員的容器,組是用於企業內的授權,這兩個不同類別的概念卻往往因為相同的成員而成為許多IT管理員的苦惱,例如一個新同事的入職,他的AD賬號往往由人事的同事創建並添加到相應OU,而將其添加到對應的各種權限組,則成為了IT管理員一件十分繁瑣的事情,下面我們將演示如何利用Powershell腳本來省去IT管理員的這項工作。
一、 創建用戶組
要實現自動同步必須讓程序知道源數據和目標數據的對應關系,本腳本利用用戶組的注釋屬性進行對應,你可以根據自己情況使用其它屬性操作。我們在用戶組注釋欄內填入需要同步OU的DN路徑。
二、 編制腳本
OuSync.ps1內容如下:
#自動同步AD中OU成員到對應組中 $LogName = "C:\users\AddNewUsers_Log.csv" #獲取組名 $VDIGroups = Get-ADGroup -Filter {info -Like "OU=*"} -SearchBase ",OU=sale,OU=users,DC=chery,DC=com" -Properties info #准備添加成員 Foreach ($VDIGroup in $VDIGroups) { #獲取成員所在OU $SearchBase = Get-ADOrganizationalUnit $VDIGroup.info #獲取OU中成員 $Members = Get-aduser -Filter {Enabled -eq "true"} -SearchBase $SearchBase #獲取VDIGroup中已存在的成員 $ExistMembers = Get-ADGroupMember -Identity $VDIGroup #比對成員是否已存在組中 Foreach ($Member in $Members){ $ExistStatus=0 Foreach($ExistMember in $ExistMembers){ #比對成員是否已存在組中 if( $ExistMember.ObjectGUID -eq $Member.ObjectGUID ){ $ExistStatus=1 } } if ($ExistStatus -eq "0"){ #不在組中則生成日志 (Get-Date).ToString('yyyy-MM-dd HH:mm:ss') + ',' + $VDIGroup.Name + ',' + $Member.Name |Out-File -FilePath $LogName -Append -Encoding utf8 #添加成員 Add-ADGroupMember -Identity $VDIGroup.ObjectGUID -Members $Member } } }
三、 創建計划任務
計划任務定時運行腳本需要注意的是使用具備權限的用戶帳戶;