使用powershell 编写一个批量移动用户到指定ou的脚本
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用powershell 编写一个批量移动用户到指定ou的脚本相关的知识,希望对你有一定的参考价值。
以下代码需要修改的地方有域名,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
}
}
以上是关于使用powershell 编写一个批量移动用户到指定ou的脚本的主要内容,如果未能解决你的问题,请参考以下文章
如何使用Powershell为office 365用户批量分配许可证