组织架构的频繁变动,IT人员除了平时基于HR的信息进行调整外,每年年底还要基于HR信息进行一次彻底的大调整,以满足日常办公中域控中呈现出准确的信息。每次调整都需要IT人员用花费几天的时间来完成。鉴于此需求,急需要一套自动化脚本来解决此问题,
经反复测试,编写了如下半自动脚本来将重复的人工操作简化为脚本执行;

  • 需要将不同的人员移入不同的OU中,如果OU不存在则需要创建,创建方法AD日常运维 ;
  • OU创建完成后,需要将指定人员移入特定OU,将需要移动OU的用户SamAccountName录入到name.txt中,一行一个用户,没有标题,并将name.txt文件放入C盘根目录;
  • 修改以下脚本中OU的变量,即需要移入部门的OU,每次只能操作一个部门;
    • $new_ou = “OU=,OU=,DC=**,DC=com”
  • 执行以下脚本:
#Powershell
- `#打开C盘
cd \
c:
#通过 if test-path 判断是否存在文件,存在删除
if(test-path user.txt){del user.txt}

#将需要移动OU的用户SamAccountName录入到name.txt中,一行一个用户,没有标题,并将name.txt文件放入C盘根目录
#运行以下脚本后会将用户的managedObjects信息输出到user.txt中
$name_array = cat name.txt
foreach($name_id in $name_array){
    dsquery user -samid $name_id >> user.txt
}        


#根据以上输出的user.txt信息,将相应的用户调整到指定OU中,如果目标OU不一致需要多次执行
#每次变更时需要修改此一级部门
$new_ou = "OU=***,OU=**,DC=***,DC=com"
$name_cn = cat c:\user.txt
$DateTimeNow = Get-Date
$wu="    成功将用户移至 " + $new_ou
Write-Output $DateTimeNow >>log.txt
foreach($qihao in $name_cn){
   $a = dsmove $qihao -newparent $new_ou
   Write-Output $a $wu >>log.txt
    }
#执行完成后,通过 if test-path 判断是否存在name文件,存在删除防止错误执行
if(test-path name.txt){del name.txt}`

更多推荐