编制AD域OU与用户组自动同步脚本

在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

        }

    }

}

 

  

三、       创建计划任务

计划任务定时运行脚本需要注意的是使用具备权限的用户帐户;

猜你喜欢

转载自www.cnblogs.com/langzixdj/p/11002480.html