|
I need one more time help. The script was working now, BUT i need to run it in workstation local administrator context. So i rewrote it to use alternate credentials, but it don't function at all. I use $bind_name in syntax DOMAIN\DOMAIN_USER. If i am logged on as this user all is working right, but if i am logged on as local administrator, the lines $objRootDSE = $objNameSpace.OpenDSObject($dnName, $bind_user, $bind_pwd, $auth_flag) returns an error. What's wrong ?Thanks.
;========================================================= ; ; function Move_PC ; ; move $computer from default Container to $target_OU ; ; Input: $computer ; $target_OU ("OU=yyy,OU=xxx,..) ; $bind_user - optional ; $bind_pwd - optional ; ;=========================================================
Function Move_PC ($computer,$target_OU, optional $bind_user, optional $bind_pwd)
Dim $LDAPRootDSE Dim $LDAPSourcePC Dim $LDAPTargetOU ,$LDAPTargetPC Dim $objSourcePC, $objTargetOU Dim $objMovePC Dim $objNameSpace Dim $objRootDSE Dim $dnName Dim $Return_code Dim $dummy
$ADS_SECURE_AUTHENTICATION = 1 $ADS_NO_AUTHENTICATION = 10 $auth_flag = $ADS_SECURE_AUTHENTICATION ; $auth_flag = $ADS_NO_AUTHENTICATION
If $bind_user <> "" $objNameSpace = GetObject("LDAP:")
$Return_code = @ERROR
If $Return_code <> 0 $dummy = Send_server_COM_Error($Return_code) EndIf EndIf
$dnName = "LDAP://rootDSE"
If $bind_user <> "" $objRootDSE = $objNameSpace.OpenDSObject($dnName, $bind_user, $bind_pwd, $auth_flag) Else $objRootDSE = GetObject($dnName) EndIf
$Return_code = @ERROR
If $Return_code <> 0 $dummy = Send_server_COM_Error($Return_code) EndIf
$LDAPRootDSE = $objRootDSE.Get("defaultNamingContext")
$Return_code = @ERROR
If $Return_code <> 0 $dummy = Send_server_COM_Error($Return_code) EndIf
$LDAPSourcePC = "LDAP://CN=" + $computer + ",CN=Computers," + $LDAPRootDSE $LDAPTargetOU = "LDAP://" + $target_OU + "," + $LDAPRootDSE $LDAPTargetPC = "CN=" + $computer
$dnName = $LDAPSourcePC
If $bind_user <> "" $objSourcePC = $objNameSpace.OpenDSObject($dnName, $bind_user, $bind_pwd, $auth_flag) Else $objSourcePC = GetObject($dnName) EndIf
$Return_code = @ERROR
If $Return_code <> 0 $dummy = Send_server_COM_Error($Return_code) EndIf
$dnName = $LDAPTargetOU
If $bind_user <> "" $objTargetOU = $objNameSpace.OpenDSObject($dnName, $bind_user, $bind_pwd, $auth_flag) Else $objTargetOU = GetObject($dnName) EndIf
$Return_code = @ERROR
If $Return_code <> 0 $dummy = Send_server_COM_Error($Return_code) EndIf
$objMovePC = $objTargetOU.MoveHere($objSourcePC.ADsPath,$LDAPTargetPC)
$Return_code = @ERROR
If $Return_code <> 0 $dummy = Send_server_COM_Error($Return_code) EndIf
$LDAPRootDSE = 0 $objSourcePC = 0 $objTargetOU = 0
EndFunction
|