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

所属分类: 脚本专栏 / vbs 阅读数: 1937
收藏 0 赞 0 分享
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


更多精彩内容其他人还在看

vbs实现恢复暂停的自动启动服务的脚本

有时候我们需要把自启动的服务停掉,方便我们处理事务,但我们如果一次停掉的自启动服务比较多,如何一次性启动他们呢
收藏 0 赞 0 分享

vbs删除注册表项的代码

一般我们删除注册表时这个是另外一个方法,这个是结合系统
收藏 0 赞 0 分享

用vbs检查注册表项的访问权限的代码

有时候我们需要知道我们是否对注册表有访问权限,下面的代码就是解决了这个问题,检查下是否能用vbs修改注册表项
收藏 0 赞 0 分享

vbs之使用Internet Explorer 屏蔽密码

演示如何通过脚本创建 Internet Explorer 的实例,并检索输入密码样式的文本框中的密码。需要带有适当的文本框的 Web 页(名为 password.htm)。
收藏 0 赞 0 分享

vbscript 注册表脚本书写

用vbscript实现的修改注册表的脚本,建议大家看看
收藏 0 赞 0 分享

vbs下通过日期查找文件夹的代码

用vbscript根据日期查找文件,有时候我们需要找指定日期的文件,用下面的代码即可
收藏 0 赞 0 分享

vbs复制文件的脚本

用vbscript实现文件的复制功能,主要用于一般的备份等操作
收藏 0 赞 0 分享

vbs实现计算机重启

用vbscript实现系统的重启,其实就是用vbscript执行系统下的shutdown.exe实现,汗
收藏 0 赞 0 分享

文件备份vbs脚本

vbs实现文件的备份,默认覆盖操作
收藏 0 赞 0 分享

vbs下用一个小方法实现批量添加域用户

在域模式下批量添加域用户就有些困难,下面是一个vbs脚本,在同级目录下用放置一个users.txt的文本文档,格式:username,password,在dc上运行该脚本,即可以将users.txt的用户信息批量添加到ad里面。可以通过移动或拖拽的方法,将生成的用户移动到ou下面
收藏 0 赞 0 分享
查看更多