場景:
最近上了Citrix虛擬桌面,其中有一個場景需要將某個部門OU下所有用戶添加到指定的組.
由於AD域中沒有類似Exchange中動態組的功能,我準備用PowerShell腳本來達到自動更新這個組的成員.
步驟:
首先我將組的描述中寫入對應OU的DistinguishedName,以此來確定組與OU對應的關係.
當然,如果公司的描述字段另有用處,你也可以使用別的閒置字段,或者直接在域架構中擴展字段.這裏就不展開講了.
接下來我們就可以編寫腳本了.
#初始化變量 $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 } } }
將上面的腳本添加至計劃任務.
1.輸入描述內容[非必須]
2.選擇用戶[用戶必須對AD組有操作權限]
3.選中"不管用戶是否登錄都要運行"
4.不要勾選"不存儲密碼"
5.不要勾選"使用最高權限運行"
6.設置好"重複任務間隔"
7.在操作裏新建一項,在"程序和腳本"裏填上"PowerShell",在"添加參數"裏填上腳本的絕對路徑.
接下來,這個腳本就會按照時間間隔來運行這個腳本了.
寫得比較簡陋,提供一個思路給各位.