El otro dia me encontré con un problema bastante «peasado» para resolver. En casa de un cliente, hicimos una migación de servidor de dominio de un Win2k3 hacia un Win2k8R2 con un Win2k12R2 como soporte secundario. La migración fue perfecta pero repasando los perfiles de usuario del ActiveDirectory, vi que muchos de ellos en su perfil tenian configurada una ruta hacia una carpeta personal que ya no servia de nada.
Problema: como hago para poder eliminar la ruta configurada en el perfil de usuario sin ir uno a uno, botón derecho, propieades, perfil … para unos 80 usuarios?
Solución: mi queridíssimo Powershell 🙂 Empezamos!
- Primer paso (importante): Ejecutar powershell desde nuestro servidor controlador de dominio y tener instalado los modulos de gestión del ActiveDirectory (por defecto cuando promocionamos un servidor, se instalan).
AddWindowsFeature RSAT-AD-PowerShell Import-Module ActiveDirectory
- Segundo Paso: Una vez instalado e importado el módulo, deberemos sacar la información de los usuarios. Para ello usaremos el comando Get-ADUser. Pero atención, si lo usamos a «paloseco», se nos pedirà que apliquemos un filtro de búsqueda. Para que hagáis la prueba, ejecutad el siguiente comando:
Get-ADUser -Filter *
El parámetro «-Filter *» nos va a mostrar todos los usuarios del AD.
- Tercer paso: ahora que sabemos buscar los usuarios, deberemos saber la información contenida en dicho usuario. Para ello usaremos el parámetro «-properties *». Esto nos sacará TODAS las propiedades del usuario. Con ello sabremos que campo modificar:
Get-ADUser [nombre de usuario con el que se loguea] -propierties *
Si nos fijamos en el resultado, ya vemos que campo queremos modificar en nuestro caso concreto: HomeDirectory. Sabiendo esto, podemos acotar aún más el filtro:
Get-ADUser [nombre de usuario con el que se loguea] -properties HomeDirectory
- Quarto paso:Ahora teniendo ya toda la información, procedemos a la modificación del parámetro HomeDirectory para TODOS los usuarios del ActiveDirectory y lo dejaremos sin ninguna ruta:
Get-ADUser -Filter * -properties HomeDirectory | Set-ADUser -Clear HomeDirectory
Y listos! Nos hemos ahorrado ir usuario a usuario modificando el HomeDirectory y lo hemos podido hacer en solo una línea de código. Ahora bien, si somos un poco ordenados y tenemos inventariadas las rutas de las carpetas locales, podemos hacer filtros y modificar solamente aquellas rutas que nos interesen. Por ejemplo, si solo quiero modificar la ruta Z:\empresa\perfiles\usuarios\ usaría el siguiente comando:
Get-ADUser -Filter * -properties HomeDirectory | where {$_.homedirectory -like "Z:\empresa\perfiles\usuarios" | Set-ADUser -Clear HomeDirectory
O si quiero cambiar a otro directorio de red:
Get-ADUser -Filter * -properties HomeDirectory | where {$_.homedirectory -like "[Directorio Viejo" | Set-ADUser -HomeDirectory "[Directorio Nuevo]"
PowerShell si lo sabemos usar o si queremos administrar nuestro dominio de una forma sencilla y rápida, es una herramienta muy poderosa. Además, siempre podemos tener nuestro repositorio de comandos en un OneNote para tenerlos a mano. En mi caso, no siempre me acuerdo de todo 😛
Espero haberos ayudado!