首页 / 编程脚本 / 利用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 = "MYDOMAINjoesmith"
""* 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