这是我脚本的输出:
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?答案 0 :(得分:0)
//
// MessageId: E_ADS_BAD_PATHNAME
//
// MessageText:
//
// An invalid directory pathname was passed
//
#define E_ADS_BAD_PATHNAME _HRESULT_TYPEDEF_(0x80005000L)
你的道路错了。