zoukankan      html  css  js  c++  java
  • VBS脚本批处理创建域用户【可自动设置用户密码,创建OU】[转]

    '***************************************************************
    '    批量添加用户的脚本,批量创建和添加到OU,自动创建对应OU。经过实践:
    '       如果要创建空密码帐户:运行前,先调整“域安全策略”,修改“密码复杂"、"最小长度",
    '    并gpupdate /force(WIN2K:secedit /refreshpolicy machine_policy /enforce)刷新组策略。
    '
    '
    '    使用方法:cscript adduser.vbs NAME.TXT
    '        ========================================================
    '        NAME.TXT的内容格式:
    '            姓名,带域后缀完整登录名,密码,所在OU,部门信息
    '
    '    e.g.    郭强龙,guoql@sk.com.cn,skagon,信息安全部,信息安全部
    '            熊剑,xiongjian@sk.com.cn,password,系统部,系统部
    '            朱朱,zhuzhu@sk.com.cn,password12,信息安全部,信息安全部
    '        ========================================================
    '   
    '                                          skagon 2006-11-17
    '********************************************************************
    On Error resume next
    If Wscript.Arguments.Count <> 1 Then Usage()
    Const ADS_PROPERTY_APPEND = 3
    set WshShell = WScript.CreateObject("WScript.Shell")
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set NamesFile = FSO.OpenTextFile(Wscript.Arguments(0), 1)

    '变量
    Dim FullName'姓名
    Dim LoginName'登陆名
    Dim FullLoginName'加域后缀登陆名
    Dim FirstName'姓
    Dim LastName'名
    Dim Password'密码
    Dim OUname'组织单位名称
    Dim OfficeName'部门名称,用来看的,和OUname一样即可
    '常量

        '''Set objOU = GetObject("LDAP://CN=Users,dc=sk,dc=com,dc=cn")
        '''这里"CN=Users",表示直接在域里面缺省的OU:Users创建中创建
        '''
        '''Set objOU = GetObject("LDAP://dc=sk,dc=com,dc=cn")
        '''表示直接在域创建中,将和域缺省的几个对象并列,如Builtin,Computer.....
        '''
        '''Set objOU = GetObject("LDAP://OU=mcse,dc=sk,dc=com,dc=cn")
        '''这里"OU=mcse",表示在自建的OU:mcse里面创建。

    DO Until Namesfile.AtEndOfStream

        Temp = NamesFile.ReadLine'把每一行的名字信息读出来
        MyArray = Split(Temp, ",", -1, 1)
        '得到姓名
        FullName = MyArray(0)
        Select Case Len(FullName)'分离姓名的姓和名(不使用于英文名)
            Case 2
                FirstName = Left(FullName,1)
                LastName = Right(FullName,1)
            Case 3
                FirstName = Left(FullName,1)
                LastName = Right(FullName,2)
            Case 4
                FirstName = Left(FullName,2)
                LastName = Right(FullName,2)
            Case Else
                FirstName = Left(FullName,1)
                LastName = Right(FullName,Len(FullName)-1)
        End Select
        '得到登录名
        FullLoginName = MyArray(1)'完整登陆名称
        LoginName = Left(MyArray(1),Instr(MyArray(1),"@")-1)
        '得到域名
        DomainName = Right(MyArray(1),Len(MyArray(1))-Instr(MyArray(1),"@"))'得到域名
        strADsPath = ADsPath( DomainName )'得到 ADsPath ,便于 LDAP查询
        '得到密码
        Password = MyArray(2)
        '得到 OU 名
        OUname = MyArray(3)
        '得到办公室名称
        OfficeName = MyArray(4)
        'Wscript.Echo MyArray(0) &"   "& MyArray(1) &"   "& MyArray(2) &"   "& MyArray(3) &"   "& MyArray(4)

        '这里OU=" & OUname & ",表示在自建的OU里面创建。当没有OU时,执行下面部分(依赖于On Eoor Resume Next)
        Set objOU2 = GetObject("LDAP://OU=" & OUname & "," & strADsPath)
        CreateUser(objOU2)
        Set objOU2 = Nothing
        '如果没有创建OU,则创建一个OU,再在这个OU里面创建用户。记住,一定要objOU.SetInfo,才能生效
        Set objDomain = GetObject("LDAP://" & strADsPath)
        Set objOU = objDomain.Create("OrganizationalUnit", "ou=" & OUname)
        objOU.SetInfo
        CreateUser(objOU)
        Set objDomain = Nothing
        Set objOU = Nothing
    Loop

    NamesFile.close

    Function usage()
        Wscript.Echo "************* Active Direcroty批量用户添加脚本 *************" & vbCrLf
        Wscript.Echo vbTab & "使用方法:"
        Wscript.Echo vbTab & "          cscript adduser.vbs name.txt"
        Wscript.Echo vbTab & "name.txt的格式:"
        Wscript.Echo vbTab & "          郭强龙,guoql@sk.com.cn,skagon,信息安全部,信息安全部"
        Wscript.Echo vbTab & "          熊剑,xiongjian@sk.com.cn,password,系统部,系统部"
        Wscript.Echo vbTab & "          朱朱,zhuzhu@sk.com.cn,password12,信息安全部,信息安全部"
        Wscript.quit
    End Function

    Function CreateUser(objOU)
        Set objUser = objOU.Create("user", "cn="& FullName)
        objUser.Put "sAMAccountName", LoginName
        objuser.displayName = FullName
        objuser.userPrincipalName = FullLoginName
        '''objUser.userAccountControl = 512
        '''objuser.AccountDisabled = FALSE'功能同上
        objuser.Description = OfficeName
        objuser.physicalDeliveryOfficeName = OfficeName
        objuser.sn = FirstName'姓
        objuser.givenName = LastName'名字
        '''objUser.telephoneNumber
        '''objUser.EmailAddress
        '''objUser.Put "pwdLastSet",0  '下次登陆时必须改密码
        '''objUser.userWorkstations    '下次登陆时必须改密码
        objuser.SetInfo
        objuser.SetPassword Password'这个动作必须在 objuser.SetInfo 之后,因为用户账户必须已经存在于ad中。
        Wscript.Echo "帐号:  " & FullName &vbTab& " 在OU: " & OUname & "   中创建成功!"
        Set ojbuser = Nothing
    End Function

    Function ADsPath(strDomainName)
        '从域名得到ADsPath ,便于 LDAP查询
        arrDomLevels = Split(strDomainName, ".")
        ADsPath = "dc=" & Join(arrDomLevels, ",dc=")
        'Wscript.Echo ADsPath
    End Function

  • 相关阅读:
    bzoj4196: [Noi2015]软件包管理器
    bzoj3992: [SDOI2015]序列统计
    bzoj 4178: A
    Spoj 8372 Triple Sums
    hdu contest day1 1007 Tricks Device
    hdu contest day1 1002 Assignment
    2018暑期生活指导第三周
    2018暑期生活指导第二周
    《大道至简》阅读笔记
    2018暑期生活指导第一周
  • 原文地址:https://www.cnblogs.com/ddlzq/p/2140207.html
Copyright © 2011-2022 走看看