| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何查找和移动 Active Directory 计算机帐户?
如何查找和移动 Active Directory 计算机帐户?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-23 20:10:40
问:

嗨,Scripting Guy!我想将计算机帐户从一个 OU 移动到另一个,但我不知道计算机帐户当前在哪个 OU,有何建议?

-- AA

答:

您好,AA。您知道,所有这些出色的建议专栏(“Dear Abby”、“Ann Landers”、“嗨,Scripting Guy!”)有一个共同特征,那就是随着时间的推移,这些专栏似乎在反复给出相同建议。不管给“Dear Abby”写过多少封信抱怨邻居的问题,您知道她也永远不会建议您烧了那家伙的房子。“Ann Landers”和“嗨,Scripting Guy!”也一样。

好吧,“Ann Landers”也一样。

问题是我们经常对读者的问题给出相同的建议,今天也不例外。即:这实际上是一个两部分的问题,因此让我们分别分析这两个部分。哦,是这样的:其中一个部分涉及搜索 Active Directory。是的,我们知道:您听说过多少次了?但似乎就是这样工作的。

正如您可能领会的,如果其中一个部分涉及搜索 Active Directory,那另一个部分必定涉及将计算机帐户从一个 OU 移动到另一个。这很简单,因此让我们先解决这个问题。以下的示例脚本将计算机 atl-ws-01 从 Finance OU 移动到 Research OU:

Set objOU = GetObject("LDAP://OU=Research,DC=fabrikam,DC=com") intReturn = objOU.MoveHere _ ("LDAP://CN=atl-ws-01,OU=Finance,DC=fabrikam,DC=com", vbNullString) 

这就行了,仅仅两行代码。我们绑定到新 OU(我们想将计算机移动到的那个 OU)。绑定到该 OU 后,我们调用 MoveHere 方法,传递给它两个参数:我们想移动的计算机的 AdsPath 以及 vbNullString(等于 Null 的 VBScript 常量)。传递 Null 作为第二个参数告诉 MoveHere 方法我们想要对象保留其当前 CN (atl-ws-01)。如果传递不同的 CN,计算机不仅被移动,它还将被重新命名。

顺便说一句,实际上不用包括 Null 参数,如果没有第二个参数,MoveHere 将假定第二个参数为 Null。我们在这里显示它,只是为了让您了解 MoveHere 接受两个参数。

特别奉送脚本:假设您的确想要重新命名 Active Directory 帐户。好,那么绑定到该帐户当前所在的 OU,调用 MoveHere 方法,然后赋予该帐户其他不同的 CN。例如,此脚本重新命名了计算机 atl-ws-01,为其指定新名称 finance-ws-01:

Set objOU = GetObject("LDAP://OU=Finance,DC=fabrikam,DC=com") intReturn = objOU.MoveHere _ ("LDAP://CN=atl-ws-01,OU=Finance,DC=fabrikam,DC=com", “cn=finance-ws-01”) 

很正确:我们应该为这些奉送的脚本收费,不是吗?

现在我们知道对如何移动计算机帐户我们所需做的全部就是解决如何“查找”该计算机帐户。以下我们将使用 Active Directory 搜索脚本。该脚本搜索名为 atl-ws-01 的计算机的 Active Directory:

On Error Resume Next



Const ADS_SCOPE_SUBTREE = 2



Set objConnection = CreateObject("ADODB.Connection") Set objCommand =   CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection



objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 



objCommand.CommandText = _ "SELECT ADsPath FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='computer' " & _ "AND name='atl-ws-01'" Set objRecordSet = objCommand.Execute



objRecordSet.MoveFirst Do Until objRecordSet.EOF Wscript.Echo objRecordSet.Fields("ADsPath").Value objRecordSet.MoveNext Loop 

前面的脚本只是回显计算机的 AdsPath。这很好,只要我们有 AdsPath,我们就能继续下一步,将计算机帐户移动到不同的 OU。(记住,除非我们重新命名计算机,否则 AdsPath 是我们需要传递给 MoveHere 方法的唯一参数。)以下是修改过的脚本,它搜索到计算机 atl-ws-01,然后将其从 Finance OU 移动到 Research OU:

On Error Resume Next



Const ADS_SCOPE_SUBTREE = 2



Set objConnection = CreateObject("ADODB.Connection") Set objCommand =   CreateObject("ADODB.Command") objConnection.Provider = "ADsDSOObject" objConnection.Open "Active Directory Provider" Set objCommand.ActiveConnection = objConnection



objCommand.Properties("Page Size") = 1000 objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE 



objCommand.CommandText = _ "SELECT ADsPath FROM 'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='computer' " & _ "AND name='atl-ws-01'" Set objRecordSet = objCommand.Execute



objRecordSet.MoveFirst Do Until objRecordSet.EOF strADsPath = objRecordSet.Fields("ADsPath").Value Set objOU = GetObject("LDAP://OU=Research,DC=fabrikam,DC=com") intReturn = objOU.MoveHere(strADsPath, vbNullString) objRecordSet.MoveNext Loop 

就这样简单、快捷。

顺便提一句,我们知道我们没有解释 Active Directory 搜索部分如何工作,更多有关使用脚本搜索 Active Directory 的信息,请查阅此脚本专家 网络广播。

明天:烧了邻居的房子。

不,等等,千万别烧别人的房子,我们只是开个玩笑。也许我们从现在起就坚持不懈地提供脚本编写建议。…

【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    CSO们如何应对新技术的安
    普通企业如何应对黑客攻
    企业该如何防范由VoIP引
    浅谈IT如何实现企业的应
    黑客与正规企业是如何串
    如何无限制申请Gmail 2.
    企业如何避免人为因素的
    社会工程学:如何利用黑客
    如何在一个文件被添加到
    木马辅助查找器 2005

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览