| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何将新的 UPN 分配给我的所有用户?
如何将新的 UPN 分配给我的所有用户?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-23 19:51:39
问:

嗨,Scripting Guy!如何将新的 UPN 分配给我的所有用户?

-- CH

答:

嗨,CH。UPN(或称“用户主体名称”)提供了另外一种登录到域上的方法。通常,您使用以下方法登录到域上:按 Ctrl-Alt-Del 组合键,键入用户名、域名及密码,然后按 Enter 键。通过使用 UPN,您不必分别输入用户和名称,而是输入类似下面的用户名:

kenmyer@fabrikam.com

我们不会花费时间阐述 UPN 的基本原理,而仅说明它具备的功能之一:即使“登录到”下拉列表中没有显示您的域名,您也可以登录到计算机上。

那么,如何更改域中所有用户的 UPN 呢?这一过程包含两个步骤:首先,需要获取域中所有用户的列表,然后,需要更改每个用户的 UPN。我们先执行第一步,这也是最关键的一步。

到目前为止,获取域中所有用户的列表的最佳方法是执行 Active Directory 搜索。过去,我们曾讨论过 Active Directory 搜索的运行机制,因此,我们现在只为您提供一个示例脚本;如果您想了解有关 Active Directory 搜索的详细信息,请收听“Scripting Guys 网络广播”。现在,我们为您提供了以下脚本,它可以返回 fabrikam.com 域中所有用户的 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='user'"  

Set objRecordSet = objCommand.Execute



objRecordSet.MoveFirst

Do Until objRecordSet.EOF

    Wscript.Echo objRecordSet.Fields("ADsPath").Value

    objRecordSet.MoveNext

Loop

当然了,Active Directory 路径提供了 Active Directory 中用户帐户的路径;例如,用户 Ken Myer 的 Active Directory 路径可能类似于以下内容:

LDAP://CN=Ken Myer,OU=Finance,DC=fabrikam,DC=com

获取 Active Directory 路径的原因是,我们需要绑定到每个用户帐户以更改其 UPN;Active Directory 路径提供了直接访问帐户的方法,“并且”我们只需要使用一行代码就能绑定到帐户上,而不必进行任何复杂的字符串处理。

绑定到用户帐户后,接下来要做什么?此时,我们需要完成两个操作:首先为用户分配新的 UPN,然后调用“SetInfo”方法,它的实际作用是将新 UPN 写入 Active Directory 用户帐户。如果用伪代码来表示,此过程类似于以下内容:

objUser.userPrincipalName = New UPN we’re assigning the user

objUser.SetInfo

如果用真代码来表示以下过程:获取 Active Directory 中所有用户帐户,分别绑定到每个帐户,然后为每个帐户分配新的 UPN,则此过程类似于以下内容

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,samAccountName,userPrincipalName FROM " & _

        "'LDAP://dc=fabrikam,dc=com' WHERE objectCategory='user'"  

Set objRecordSet = objCommand.Execute



objRecordSet.MoveFirst

Do Until objRecordSet.EOF

    strUser = objRecordSet.Fields("ADsPath").Value

    strNewUPN = objRecordSet.Fields("samAccountName").Value & "@" & "contoso.com"

    Set objUser =  GetObject(strUser)

    objUser.userPrincipalName = strNewUPN

    objUser.SetInfo

    objRecordSet.MoveNext

Loop

在获取用户帐户集合后,所有主要操作都要靠 Do Until 循环来实现。在该循环中,我们先将用户 1 的 Active Directory 路径分配给变量 strUser。然后,为该用户构建新的 UPN。通常,UPN 由用户的登录名 (samAccountName) 和其后的域名组成。因为 CH 的问题所涉及的是更改现有 UPN,所以,要在此处略加改动。我们假定贵公司与另一个组织进行了合并,您现在希望用户在其 UPN 中使用新的名称 (contoso.com)。例如:

kenmyer@contoso.com

因此,我们将构建一个由“samAccountName”、“@”符号以及“contoso.com”组成的新 UPN,然后将新 UPN 存储在名为 strNewUPN 的变量中。这就是下面这行代码所完成的操作:

strNewUPN = objRecordSet.Fields("samAccountName").Value & "@" & "contoso.com"

到目前为止,一切顺利。接下来,我们绑定到一个用户帐户,并为该用户分配新的 UPN。只需使用下面两行代码,即可完成上述操作:

Set objUser =  GetObject(strUser)

objUser.userPrincipalName = strNewUPN

我们调用 SetInfo 并执行以上代码,第一个用户便可拥有新的 UPN。然后再执行一次循环,为集合中的下一位用户分配新的 UPN。这一过程自动继续执行,直至所有用户都拥有了全新的 UPN。

我们不知道您每隔多长时间需要更改一次域中所有用户的 UPN,但是,您可以使用此脚本的基本思路来实现很多其他目的。例如,您可能需要更改所有用户的公司名,也可能想要求所有用户下次登录时更改其密码。只需对今天介绍的脚本稍加修改,就可以完成任何涉及对域中所有用户帐户进行修改的任务。

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

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

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