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