Cuando trabajamos con entornos de Servicios de Terminal o Citrix que utilizan la pestaña de Perfil de Servicios de Terminal de Directorio Activo, ya sea para la configuración del perfil móvil o la carpeta personal de cada usuario, nos puede ser de gran utilidad el poder acceder a esos campos desde scripts de Powershell. Al poder acceder desde powershell nos va a permitir hacer consultas, modificaciones o eliminar estos campos de forma automatizada independientemente del número de usuarios facilitando las tareas que tengamos que realizar.
La mayoría de los atributos de los usuarios en Directorio Activo se pueden acceder de forma sencilla al obtener el objeto del usuario. El problema sucede que los campos de la pestaña del Perfil de Servicios de Terminal es un caso excepcional ya que no son campos de texto normales. Tenemos que acceder a ellos de una forma específica.
El primer paso sería obtener el objeto del usuario en el que queremos acceder a estas propiedades. Para ello ejecutamos el comando:
1 |
$Usuario = get-AdUser -filter {SAMAccountName -like $Usuario} |
Una vez que tenemos el usuario tenemos dos opciones:
Leer la información
Una vez que tenemos el usuario, para leer los campos ejecutamos:
1 2 3 4 5 |
$UsuarioDN = $Usuario.DistinguishedName $UsuarioOU = [ADSI] "LDAP://$UsuarioDN" $TSPerfil = $UsuarioOU.PSBase.invokeget("TerminalServicesProfilePath") $TSHomeLetra = $UsuarioOU.PSBase.invokeget("TerminalServicesHomeDrive") $TSHomeCarpeta = $UsuarioOU.PSBase.invokeget("TerminalServicesHomeDirectory") |
De esta forma hemos obtenido en las tres variables $TSPerfil, $TSHomeLetra y $TSHomeCarpeta el contenido de los campos
Modificar la información
Para modificar la información de los campos es necesario realizar un paso más.
1 2 3 4 5 6 |
$UsuarioDN = $Usuario.DistinguishedName $UsuarioOU = [ADSI] "LDAP://$UsuarioDN" $UsuarioOU.PSBase.invokeSet("TerminalServicesProfilePath",$TSPerfil) $UsuarioOU.PSBase.invokeSet("TerminalServicesHomeDrive",$TSHomeLetra) $UsuarioOU.PSBase.invokeSet("TerminalServicesHomeDirectory",$TSHomeCarpeta) $UsuarioOU.setinfo() |
Te ha gustado la entrada SGUENOS EN TWITTER O INVITANOS A UN CAFE?