One quick test suggestion, in your UDF, instead of using reflected property references (fe. $obj.Put("property-name","value") just use the simple hard-coded variety ($obj.property = value) ... we built our entire domain many times over using ADSI and LDAP and $OU.Create in loops ... no issues found ...