码迷,mamicode.com
首页 > 移动开发 > 详细

使用powershell 编写一个批量移动用户到指定ou的脚本

时间:2020-07-09 19:23:02      阅读:163      评论:0      收藏:0      [点我收藏+]

标签:文档   array   cat   标签   返回   contain   com   使用   打开   

以下代码需要修改的地方有域名,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的脚本

标签:文档   array   cat   标签   返回   contain   com   使用   打开   

原文地址:https://blog.51cto.com/11728495/2509777

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!