利用VBS脚本自动创建计算机帐户的代码 |
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 |