場景:架構
最近上了Citrix虛擬桌面,其中有一個場景須要將某個部門OU下全部用戶添加到指定的組.ide
因爲AD域中沒有相似Exchange中動態組的功能,我準備用PowerShell腳原本達到自動更新這個組的成員.ui
步驟:日誌
首先我將組的描述中寫入對應OU的DistinguishedName,以此來肯定組與OU對應的關係.blog
固然,若是公司的描述字段另有用處,你也能夠使用別的閒置字段,或者直接在域架構中擴展字段.這裏就不展開講了.ip
接下來咱們就能夠編寫腳本了.get
#初始化變量 $LogName = "D:\VDI_AddNewVDIUsersToVDIGroup_Log.csv" #獲取VDI組 $VDIGroups = Get-ADGroup -Filter {Description -Like "OU=*"} -SearchBase "OU=Groups,OU=VDI,OU=Application Systems,DC=Contoso,DC=com" -Properties Description #準備添加成員 Foreach ($VDIGroup in $VDIGroups) { #獲取成員所在OU $SearchBase = Get-ADOrganizationalUnit $VDIGroup.Description #獲取OU中成員 $Members = Get-ADUser -Filter {employeeid -like "*"} -SearchBase $SearchBase #獲取VDIGroup中已存在的成員 $ExistMembers = Get-ADGroupMember -Identity $VDIGroup #準備比對成員是否已存在組中 Foreach ($Member in $Members){ #比對成員是否已存在組中 if ($ExistMembers.ObjectGUID -notcontains $Member.ObjectGUID){ #生成日誌 (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 } } }
將上面的腳本添加至計劃任務.it
1.輸入描述內容[非必須]io
2.選擇用戶[用戶必須對AD組有操做權限]class
3.選中"無論用戶是否登陸都要運行"
4.不要勾選"不存儲密碼"
5.不要勾選"使用最高權限運行"
6.設置好"重複任務間隔"
7.在操做裏新建一項,在"程序和腳本"裏填上"PowerShell",在"添加參數"裏填上腳本的絕對路徑.
接下來,這個腳本就會按照時間間隔來運行這個腳本了.
寫得比較簡陋,提供一個思路給各位.