以下代码需要修改的地方有域名,ou对应的组织名称

复制代码到C盘根目录 保存成XXX.ps1 执行

#第一个总循环,用来做类似(goto标签)
for($i=1;$i -le 5;$i++){
	#第一个定位if
	if($i -eq 1){
		#清屏
		cls
		#返回根目录,并且打开C盘
		cd \
		c:
		#通过 if test-path 判断是否存在文件,存在删除,不存在跳过按顺序执行下面的语句
		if(test-path user.txt){del user.txt}
		if(test-path log.txt){del log.txt}
		if(test-path name.txt){del name.txt}
		#创建空文本文档
		new-item user.txt -type file >> null
		new-item name.txt -type file >> null
		new-item log.txt -type file >> null
		echo '-------------------------------------------------'
		echo '*******这是一个批量迁移用户到指定OU的脚本********'
		echo '-------------------------------------------------'
		#脚本继续,所以指定变量i 增加
		$i = 2
	}
	#第二个定位if
	if($i -eq 2){
		echo ''
		echo '【1】请输入你需要变更的用户账号,直到输入数字"1"回车,跳转到OU选择。'
		echo '【2】如果你想批量导入已知账户,把名字复制到C:\name.txt,一行一个账户名字,然后输入2回车'
		echo ''
		#做一个批量查询用户的变量循环
		#变量j无意义,重复使用中,利用来做标签定位,continue是跳出当前循环。
		for($j = 1;$j -le 4;$j++){
			$name = read-host "变更的用户名"
			#当查询人员结束,输入数字1回车跳转到部门选择
			if($name -eq "1"){
				$j=5
				continue
			}
			#当已有自己的名单的时候,可以把名单存放到c:\name.txt中,进行批量转换
			if($name -eq '2'){
				$name_array =cat name.txt
				foreach($name_id in $name_array){
					dsquery user -samid $name_id >> user.txt
				}	
				$j = 5
				echo ""
				continue
			}
			#判断用户名是否存在AD域控中。
			if(dsquery user -samid $name){
				$name_cn = dsquery user -samid $name 
				$name_array =cat c:\user.txt
				$j=0
			}else{
				echo "域用户名不存在,请重新输入查询"
				$j=0
				echo ""
				continue
			}
			#判断查询的用户是否重复存在文档中。
			if($name_array -contains $name_cn){
				echo '已存在用户'
				$j=0
				echo ""
				continue
			}else{
				dsquery user -samid $name >>user.txt
				$name_cn
				$j=0
				echo ""
				continue
			}
		}
		$i =3
	}
	#第三个定位if
	if($i -eq 3){
		echo ''
		echo '------------------------------------------------------------'
		echo '************请输入你要变更到的部门名称**********************'
		echo '部门名字有空格,是需要使用双引号""包起来,建议查询都包起来'
		echo '如果不知道部门名称,可以输入数字"2"回车,查询组织下所有部门'
		echo '------------------------------------------------------------'
		echo ''	
		#部门做了一个循环,用来选择部门用的
		#这里ou=all 是顶级组织,按公司实际情况而定。abcd是公司的域名
		for($j=1;$j -le 4;$j++){
			$bumen = read-host "变更的部门名称"
			#查询组织下所有部门
			if($bumen -eq 2){
				dsquery ou 'ou=ALL,dc=abcd,dc=com' -o rdn
				$j = 0
				echo ''
				continue
			}
			#查看部门是否存在
			if(dsquery ou -name $bumen){
				$bumen_cn = dsquery ou -name $bumen
				$bumen_cn
				$j =5
			}else{
				echo '部门不存在,请重新输入。'
				echo ''
				$j=0
			}
		}
		$i =4
	}
	#第四个定位if
	if($i -eq 4){
		echo ''
		echo --------------------------------------------------------
		echo '*********是否要把选择的用户,变更到此部门***************'
		echo '【1】确认人员变更到部门'
		echo '【2】部门选择错误,重新选择部门'
		echo '【3】新增人员'
		echo --------------------------------------------------------
		echo ''
		$select = read-host "请输入您的选择"
		if($select -eq 1){
			$name_cn = cat c:\user.txt
			foreach($j in $name_cn){
				dsmove $j -newparent $bumen_cn >>log.txt
			}
			$i=6
			continue
		}
		if($select -eq 2){
			$i=2
			continue
		}
		if($select -eq 3){
			$i=1
			continue
		}
		echo ""
		echo "请输入正确的选择:【1】【2】【3】"
		$i = 3
	}
}