"Mover" propiedades entre objetos en Active Directory

Teniendo dos DNs, creamos los objetos correspondientes:

$cnA = ""CN=grupoA,OU=Groups,DC=ar,DC=lugsaju,DC=com"
$cnB = ""CN=grupoB,OU=Groups,DC=ar,DC=lugsaju,DC=com"

$grupoA = new-object DirectoryServices.DirectoryEntry("LDAP://$cnA")
$grupoB = new-object DirectoryServices.DirectoryEntry("LDAP://$cnB")


una vez que tenemos los objetos ADSI ($grupoA,$grupoB), vamos a mover el campo "info" desde el $grupoA al $grupoB:

$grupoA.info
esto es un texto informativa
$grupoB.info
$


primero, guardamos el info en una var:
$infoTemp = $grupoA.info

luego, asignamos a $grupoB el contenido de la var:
$grupoB.psbase.InvokeSet("info","$info")
$grupoB.psbase.CommitChanges()


entonces, eliminamos el contenido del campo info del $grupoA
$grupoA.putEx(1,"info",0) # es un cero
$grupoA.setInfo()


y comprobamos:
$grupoA.info
$
$grupoB.info
esto es un texto informativa
$


Ahora lo vamos a complicar un poco mas, al mover el Manager del grupoA al grupoB

el campo ManagedBy contiene un objeto de AD (no es solo texto), por lo tanto, tenemos que obtener 1º este objeto y luego, realizar lo mismo que antes, por lo tanto

$MgrDN = $grupoA.managedBy
$Mgr= new-object DirectoryServices.DirectoryEntry("LDAP://$MgrDN")
$Manager = $Mgr.distinguishedName


asignamos el managedBy al grupoB

$grupoB.psbase.invokeSet("managedBy","$Manager")
$grupoB.psbase.CommitChanges()


Eliminamos el Manager del grupoA
$grupoA.PutEx(1,"managedBy",0)
$grupoA.setInfo()

No hay comentarios.: