Vbscript 在AD中交换属性

Vbscript 在AD中交换属性,vbscript,active-directory,attributes,swap,Vbscript,Active Directory,Attributes,Swap,我正在尝试交换Active Directory中的某些属性:我希望实际的电子邮件属性(恰好是mail)成为我的otherMailbox。然后,我希望我的实际登录用户名(我认为是objUser.userPrincipalName)也成为我的新电子邮件。VBScript调试步骤1:在错误恢复时删除,然后查看有什么中断 AFAICS您的代码有3个问题(除了OERN): 循环objUser是一个对象,而不是布尔值,因此objUser=True将失败 Put方法期望属性名称作为第一个参数,属性的新值作为

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

VBScript调试步骤1:在错误恢复时删除
,然后查看有什么中断

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

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

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"
有关更多示例,请查看脚本存储库

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"
上面的代码工作正常,但如果我将CN更改为sAMAccountName,则会出现以下错误: 我得到了这个错误:

  • 行:1
  • 克拉特:2
  • 错误:0x80005000
  • 代码:80005000
  • 来源:(空)
    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"