利用VBS腳本自動(dòng)創(chuàng)建計(jì)算機(jī)帳戶的代碼
更新時(shí)間:2007年02月26日 00:00:00 作者:
mcse注:其實(shí)這是 按照ADSI(Active Directory Services Interface:活動(dòng)目錄服務(wù)接口)寫(xiě)的程序。如果你安裝了resource kit,這段代碼可以用netcom這條命令進(jìn)行工作,下面是netcom的一個(gè)例子:
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
NETDOM /Domain:MYDOMAIN /user:adminuser /password:apassword MEMBER MYCOMPUTER /ADD
復(fù)制代碼 代碼如下:
***********************
'* 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
相關(guān)文章
使用批處理文件異地備份數(shù)據(jù)庫(kù)(最近幾天的數(shù)據(jù))
數(shù)據(jù)庫(kù)異地備份對(duì)一個(gè)網(wǎng)站來(lái)說(shuō)是非常必要的,這里談一下使用批處理文件對(duì)數(shù)據(jù)庫(kù)異地本份的過(guò)程2006-06-06MSScriptControl.ScriptControl組件的用法實(shí)例
這篇文章主要介紹了MSScriptControl.ScriptControl組件的用法實(shí)例,需要的朋友可以參考下2014-08-08vbs-toolkit VBSEdit 提供 免費(fèi)的COM組件
VBSCRIPT 語(yǔ)法簡(jiǎn)單 強(qiáng)大 但是功能上明顯不足 需要第三方的控制 e.g. COM 組件來(lái)擴(kuò)展其功能. VBSEDIT 安裝完之后就可以在安裝目錄下發(fā)現(xiàn) 免費(fèi)提供的 COM 組件 vbs toolkit2018-06-06枚舉域內(nèi)計(jì)算機(jī)個(gè)數(shù)vbscript腳本(沒(méi)環(huán)境,沒(méi)測(cè)試)
枚舉域內(nèi)計(jì)算機(jī)個(gè)數(shù)的腳本,參考了微軟官方的代碼,有興趣的朋友可以參考下。2009-10-10用vbscript實(shí)現(xiàn)隱藏任務(wù)欄圖標(biāo)的腳本
一個(gè)可以隱藏任務(wù)欄圖標(biāo)的腳本,方便需要隱藏任務(wù)欄圖標(biāo)的朋友2008-06-06ntiIframe.vbs用于批量清除被添加到文件中的惡意代碼
ntiIframe.vbs用于批量清除被添加到文件中的惡意代碼...2007-03-03