使用VBscript将计算机移动到新OU时出现错误80005000

时间:2015-02-22 04:20:27

标签: vbscript ldap

这是我脚本的输出:

Leave SECRETARY in Admin
New  OU is LDAP://OU=Technology,OU=DomainComputers,DC=xxx,DC=d2g,DC=com
dest DN is OU=Technology,OU=DomainComputers,DC=xxx,DC=d2g,DC=com
from DN is CN=STUDENT100,OU=Private,OU=DomainComputers,DC=xxx,DC=d2g,DC=com
Move STUDENT100 from Private to Technology
error 80005000
Leave LAP6514H in Kiosk
Leave LAP6461H in Teachers

这是有问题的代码。这是在一个循环中,从新目的地的数据库中读取ou1,从相应的计算机的AD读取ou2。

  If ou1="" Then
    wscript.echo "Leave",computername,"in",ou2
  Else
    If ou1<>ou2 Then
        'move to right OU
      newOU = "LDAP://OU=" & ou1 & ",OU=DomainComputers," & DCsuffix
      wscript.echo "New  OU is",newOU
      Set objOU = GetObject(newOU)
      wscript.echo "dest DN is",objOU.DistinguishedName
      wscript.echo "from DN is",PCDN
      Wscript.echo "Move",computername,"from",ou2,"to",ou1
      On Error Resume next
      objOU.MoveHere PCDN, vbNullString
      If err.number<>0 then wscript.echo "error",Hex(err.number)
      On Error GoTo 0
      Set objOU = Nothing
    End If
  End If

我在同一个脚本中的其他地方几乎完全相同,使用obj.MoveHere成功地将用户移动到新的OU

我使用ADSI编辑检查OU是否正确,输出显示新的存在。我检查了容器的权限。我可以使用AD用户和计算机MMC移动计算机。我在Win2012 R2 DC上以管理员身份运行脚本。我试过另一个DC。如果我删除了&#39; On Error resume&#39;它显示文本&#34; Active Directory:传递了无效的目录路径名&#34;并停止。有人可以发现我的错误吗?

3月2日:我已经没事了。作为一种解决方法,我使用脚本(使用On Error ...)来查看需要移动的内容,然后使用AD MMC手动移动它们。我很欣赏一个更好的建议。是否有另一种方法可以移动AD对象而不使用LDAP?

1 个答案:

答案 0 :(得分:0)

//
// MessageId: E_ADS_BAD_PATHNAME
//
// MessageText:
//
//  An invalid directory pathname was passed
//
#define E_ADS_BAD_PATHNAME               _HRESULT_TYPEDEF_(0x80005000L)

你的道路错了。