PowreShell場景:自動添加OU用戶到指定的組

場景:

最近上了Citrix虛擬桌面,其中有一個場景需要將某個部門OU下所有用戶添加到指定的組.

由於AD域中沒有類似Exchange中動態組的功能,我準備用PowerShell腳本來達到自動更新這個組的成員.

步驟:

首先我將組的描述中寫入對應OU的DistinguishedName,以此來確定組與OU對應的關係.

clip_image001

當然,如果公司的描述字段另有用處,你也可以使用別的閒置字段,或者直接在域架構中擴展字段.這裏就不展開講了.

接下來我們就可以編寫腳本了.

#初始化變量
$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.不要勾選"使用最高權限運行"

clip_image002

6.設置好"重複任務間隔"

clip_image003

7.在操作裏新建一項,在"程序和腳本"裏填上"PowerShell",在"添加參數"裏填上腳本的絕對路徑.

clip_image004

接下來,這個腳本就會按照時間間隔來運行這個腳本了.

寫得比較簡陋,提供一個思路給各位.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章