首页 > 编程 > VBScript > 正文

利用VBS脚本自动创建计算机帐户的代码

2020-06-26 18:04:53
字体:
来源:转载
供稿:网友
mcse注:其实这是 按照ADSI(Active Directory Services Interface:活动目录服务接口)写的程序。如果你安装了resource kit,这段代码可以用netcom这条命令进行工作,下面是netcom的一个例子:  

  NETDOM /Domain:MYDOMAIN /user:adminuser /password:apassword MEMBER MYCOMPUTER /ADD  

复制代码代码如下:

  *********************** 

  '* Start Script 

  '*********************** 

  Dim sComputerName, sUserOrGroup, sPath, computerContainer, rootDSE, lFlag 

  Dim secDescriptor, dACL, ACE, oComputer, sPwd 

  ' 

  '* Declare constants used in defining the default location for the 

  '* machine account, flags to identify the object as a machine account, 

  '* and security flags 

  'Const UF_WORKSTATION_TRUST_ACCOUNT = &H1000 

  Const UF_ACCOUNTDISABLE = &H2 

  Const UF_PASSWD_NOTREQD = &H20 

  Const ADS_GUID_COMPUTRS_CONTAINER = "aa312825768811d1aded00c04fd8d5cd" 

  Const ADS_ACETYPE_ACCESS_ALLOWED = 0 

  Const ADS_ACEFLAG_INHERIT_ACE = 2 

  ' 

  '* Set the flags on this object to identify it as a machine account 

  '* and determine the name. The name is used statically here, but may 

  '* be determined by a command line parameter or by using an InputBox 

  'lFlag = UF_WORKSTATION_TRUST_ACCOUNT Or UF_ACCOUNTDISABLE Or UF_PASSWD_NOTREQD 

  sComputerName = "TestAccount" 

  ' 

  '* Establish a path to the container in the Active Directory where 

  '* the machine account will be created. In this example, this will 

  '* automatically locate a domain controller for the domain, read the 

  '* domain name, and bind to the default "Computers" container 

  '********************************************************************* 

  Set rootDSE = GetObject("LDAP://RootDSE") 

  sPath = "LDAP://  Set computerContainer = GetObject(sPath) 

  sPath = "LDAP://" & computerContainer.Get("distinguishedName") 

  Set computerContainer = GetObject(sPath) 

  ''* Here, the computer account is created. Certain attributes must 

  '* have a value before calling .SetInfo to commit (write) the object 

  '* to the Active Directory 

  'Set oComputer = computerContainer.Create("computer", "CN=" & sComputerName) 

  oComputer.Put "samAccountName", sComputerName + "$" 

  oComputer.Put "userAccountControl", lFlag 

  oComputer.SetInfo 

  ' 

  '* Establish a default password for the machine account 

  'sPwd = sComputerName & "$" 

  sPwd = LCase(sPwd) 

  oComputer.SetPassword sPwd 

  ''* Specify which user or group may activate/join this computer to the 

  '* domain. In this example, "MYDOMAIN" is the domain name and 

  '* "JoeSmith" is the account being given the permission. Note that 

  '* this is the downlevel naming convention used in this example. 

  'sUserOrGroup = "MYDOMAIN/joesmith" 

  ''* Bind to the Discretionary ACL on the newly created computer account 

  '* and create an Access Control Entry (ACE) that gives the specified 

  '* user or group full control on the machine account 

  'Set secDescriptor = oComputer.Get("ntSecurityDescriptor") 

  Set dACL = secDescriptor.DiscretionaryAcl 

  Set ACE = CreateObject("AccessControlEntry") 

  ' 

  '* An AccessMask of "-1" grants Full Control 

  ' 

  ACE.AccessMask = -1 

  ACE.AceType = ADS_ACETYPE_ACCESS_ALLOWED 

  ACE.AceFlags = ADS_ACEFLAG_INHERIT_ACE 

  ''* Grant this control to the user or group specified earlier. 

  'ACE.Trustee = sUserOrGroup 

  ' 

  '* Now, add this ACE to the DACL on the machine account 

  'dACL.AddAce ACE 

  secDescriptor.DiscretionaryAcl = dACL 

  ' 

  '* Commit (write) the security changes to the machine account 

  'oComputer.Put "ntSecurityDescriptor", Array(secDescriptor) 

  oComputer.SetInfo 

  ''* Once all parameters and permissions have been set, enable the 

  '* account. 

  ' 

  oComputer.AccountDisabled = False 

  oComputer.SetInfo 

  ''* Create an Access Control Entry (ACE) that gives the specified user 

  '* or group full control on the machine account 

  'wscript.echo "The command completed successfully." 

  '***************** 

  '* End Script 
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表