在AD中交换属性

时间:2015-06-08 21:16:41

标签: vbscript active-directory attributes swap

on error resume next

Set objUser = GetObject("LDAP://CN=" & sAMAccountName & _
              "ou=usuarios,dc=quahog,dc=edu,dc=br")
do while objUser = true
       objUser.Put "objUser.otherMailbox", "objUser.mail"
       objUser.Put "objUser.mail", "objUser.userPrincipalName"
loop

wscript.echo "Done"

我正在尝试在Active Directory中交换一些属性:我希望我的实际电子邮件属性(恰好是mail)是我的otherMailbox。然后,我希望我的实际登录用户名(我认为是objUser.userPrincipalName)也是我的新电子邮件。

2 个答案:

答案 0 :(得分:0)

VBScript调试步骤1:删除On Error Resume Next,看看有什么中断。

AFAICS您的代码有3个问题(除了OERN):

  • 循环。 objUser是一个对象,而不是布尔值,因此objUser = True将失败。
  • Put方法需要将属性名称作为第一个参数,将属性的新值作为第二个参数。
  • 更改属性后,您需要将更改实际写回AD。

将您的代码更改为:

Set objUser = GetObject("LDAP://CN="& sAMAccountName & _
              "ou=usuarios,dc=quahog,dc=edu,dc=br")

objUser.Put "otherMailbox", objUser.mail
objUser.Put "mail", objUser.userPrincipalName
objUser.SetInfo

WScript.Echo "Done"

查看ActiveXperts脚本存储库以获取更多示例。

答案 1 :(得分:0)

    Set objUser = GetObject("LDAP://CN=Peter Griffin,ou=usuarios,dc=quahog,dc=edu,dc=br")

    objUser.Put "otherMailbox", objUser.mail
        objUser.Put "mail", objUser.userPrincipalName
    objUser.SetInfo


wscript.echo "done"

上面的代码运行完美,但如果我将CN更改为sAMAccountName,我会收到此错误: 我收到了这个错误:

  • 行:1
  • Caract。:2
  • 错误:0x80005000
  • 代码:80005000
  • 资料来源:( null)