Sí, almacenar información en la descripción de los objetos de equipo de AD no es precisamente nuevo, pero puede ser fundamental si quieres tener a mano detalles del hardware, el último usuario que inició sesión o incluso el nombre del controlador de dominio. El problema es que introducir información manualmente no es escalable, especialmente si trabajas con cientos o miles de máquinas. Automatizarlo con PowerShell simplifica mucho las cosas, y configurar una directiva de grupo para ejecutar estos scripts al iniciar sesión garantiza que tus datos se mantengan actualizados. Dicho esto, debes tener cuidado con los permisos; a veces, los usuarios pueden sobrescribir tu información si no están bloqueados. En general, es una forma práctica de mantener algunas entradas manuales dinámicas y actualizadas sin esfuerzo.
Cómo reparar y automatizar la actualización de la información del equipo en AD mediante PowerShell
Actualice la descripción de sus computadoras con PowerShell
Este método es ideal para ver detalles del hardware, como el fabricante, el modelo o el número de serie, en el campo de descripción de AD. Resulta práctico si se está solucionando un problema o simplemente se busca una visión general sin tener que revisar los inventarios de hardware. Se aplica cuando se observa que la descripción no está completa o necesita actualizarse. El script se conectará a AD, encontrará la máquina actual y actualizará su descripción con los valores que se obtengan localmente (por ejemplo, de WMI).En algunas configuraciones, esto podría funcionar solo para la máquina que ejecuta el script, por lo que si se desea actualizar todas las computadoras de forma remota, se necesitará un enfoque diferente (más sobre esto más adelante).Una vez ejecutado el script, actualice la consola de ADUC; la información debería aparecer, con suerte correcta y actualizada.
Esto es lo que hace el script principal: usa la clase DirectoryServices. NET para conectar y modificar objetos de equipo de AD. El comando es similar a esto (nota: es posible que deba ajustar las rutas LDAP según la configuración de su dominio):
$ComputerSearcher = New-Object DirectoryServices. DirectorySearcher $ComputerSearcher. SearchRoot = "LDAP://DC=yourdomain, DC=com" $ComputerSearcher. Filter = "(&(objectCategory=Computer)(CN=$computer))" $computerObj = [ADSI]$ComputerSearcher. FindOne().Path $computerObj. Put("Description", "$vendor|$Model|$SerialNumber") $computerObj. SetInfo()
Si prefiere usar los cmdlets habituales en su equipo, el cmdlet Set-ADComputer del módulo Active Directory es mucho más sencillo, pero requiere que el módulo esté instalado (parte de RSAT).Así es como se ve:
Set-ADComputer -Identity $computer -Description "$vendor|$Model|$SerialNumber"
Solo tenga en cuenta que, para ejecutar esto, probablemente necesite hacerlo con una cuenta de administrador que tenga permisos para modificar objetos de la computadora y tenga instalado el módulo Active Directory PowerShell.
Automatizar las actualizaciones de descripciones al iniciar sesión con la directiva de grupo
Si desea que esto ocurra automáticamente cada vez que alguien inicie sesión (o al iniciar las máquinas), deberá configurar una GPO. No es tan complicado: abra gpmc.msc, cree un nuevo objeto de directiva de grupo, asígnelo a la unidad organizativa de destino y configure un script de inicio de sesión en Configuración de usuario > Directivas > Configuración de Windows > Scripts (Inicio de sesión/Cierre de sesión). En la pestaña Scripts de PowerShell, haga clic en Agregar y seleccione el archivo de script, por ejemplo, FillCompDesc.ps1. También puede agregar parámetros como -ExecutionPolicy Bypass para no tener que modificar las directivas de ejecución en todas las máquinas.
Asegúrese de que el script tenga permisos para modificar objetos de AD. Puede delegar el permiso de escritura de descripción en los objetos de equipo de la unidad organizativa a un grupo o usuario específico, para que todos los usuarios que ejecuten el script puedan actualizar su información sin afectar los permisos de los demás. Cuando se aplique la GPO y se inicien los equipos, el campo de descripción debería empezar a llenarse con información del hardware, el último usuario o cualquier otro detalle que haya guardado. Tenga en cuenta que, sin los permisos adecuados, los usuarios podrían sobrescribir o eliminar su información. Esto es propio de Windows, por supuesto.
Agregar información de usuario conectado y controlador de dominio
Supongamos que desea que la descripción también muestre el usuario actual y el servidor de inicio de sesión; añadirlos es sencillo. Simplemente modifique la línea del script para incluir variables de entorno, como se muestra a continuación:
$computerObj. Put("Description", "$vendor|$Model|$SerialNumber|$env:username|$env:LOGONSERVER")
Cierra sesión y vuelve a iniciarla, luego revisa el objeto de equipo de AD. Ahora debería mostrar información del hardware, quién inició sesión y el controlador de dominio en el que se autenticó. No sé por qué funciona, pero es bastante útil, especialmente si quieres información rápida sobre quién usa qué y dónde.
Para analizar y usar esa información más tarde, puedes tomar la descripción y dividirla en variables de la siguiente manera:
$ComputerName = 'PC-MUN22s7b2' ($vendor, $Model, $SerialNumber, $Username, $LogonServer) = ((Get-ADComputer -Identity $ComputerName -Properties description).description).split("|")
Y si tiene curiosidad sobre quién ha iniciado sesión en una determinada máquina o busca al usuario actual en su entorno, puede ejecutar comandos como:
Get-ADComputer -Filter "description -like '*M. Becker*'" -Properties * | Select-Object Name, description | Format-Table
Básicamente, esta es una forma práctica de mantener la información de su máquina activa y visible justo donde la necesita, sin necesidad de actualizaciones manuales cada vez.