Uso de DSC para instalar y mantener controladores USB en varios equipos

Última actualización: 17/12/2025
Autor: Isaac
  • DSC permite definir y mantener de forma declarativa el estado deseado de equipos Windows, incluyendo controladores USB y otros componentes críticos.
  • Las versiones modernas de Windows (Server 2016 en adelante, Windows 10 y 11) integran DSC, que se gestiona mediante PowerShell y Windows Management Framework 5.1.
  • Las configuraciones se escriben en PowerShell, se compilan en archivos MOF y se aplican al sistema con cmdlets como Start-DscConfiguration y Set-DSCLocalConfigurationManager.
  • Los registros en Microsoft-Windows-Dsc/Operational y la metaconfiguración del LCM facilitan el diagnóstico y la auditoría de despliegues de drivers y demás ajustes.

Configuración DSC para controladores USB

Cuando gestionas varios equipos Windows con controladores USB, mantenerlos todos iguales y bien configurados puede convertirse en un quebradero de cabeza: versiones distintas, drivers que se instalan mal, cambios manuales que nadie documenta… Aquí es donde entra en juego PowerShell Desired State Configuration (DSC), una tecnología pensada precisamente para definir cómo quieres que esté un sistema y dejar que sea Windows quien se encargue de aplicarlo y mantenerlo.

DSC permite describir en código el estado deseado de tus equipos: qué controladores USB deben estar presentes, qué servicios tienen que estar activos, qué variables de entorno quieres crear o qué metaconfiguración debe usar cada máquina. Una vez definido ese estado, DSC lo aplica, lo supervisa y, si algo cambia, vuelve a dejar la máquina como debería estar. Es decir, adiós a las configuraciones manuales una a una y a la falta de consistencia entre equipos.

Qué es Desired State Configuration y por qué importa con controladores USB

PowerShell Desired State Configuration es una plataforma de administración declarativa incluida en Windows que te permite definir, desplegar y mantener la configuración de uno o muchos equipos. En lugar de escribir scripts que digan “haz esto, luego esto otro”, describes simplemente cómo quieres que esté el sistema, y DSC se encarga de llegar hasta ahí y de mantener ese estado en el tiempo.

Aplicado al ámbito de los controladores USB, DSC se convierte en una herramienta muy potente para garantizar que todos los equipos tengan los mismos drivers, con la versión adecuada y sin sorpresas. Por ejemplo, en una empresa con decenas de puestos que usan el mismo lector de tarjetas USB, impresoras de etiquetas USB o dispositivos industriales especializados, puedes definir una configuración DSC que asegure que el controlador concreto está instalado y correctamente registrado en todos ellos.

Además, DSC se integra con otros componentes del ecosistema de Windows como Windows Management Framework y con servicios en la nube como Azure Automation State Configuration, lo que facilita la gestión centralizada de muchas máquinas, tanto en local como en entornos híbridos.

Otra ventaja clave es que DSC no solo despliega configuraciones una vez; también puede corregir desviaciones. Si alguien desinstala un controlador USB crítico, modifica una ruta de entorno o cambia un ajuste relevante, el agente DSC en la máquina es capaz de detectar ese cambio y restaurar el estado definido como deseado, mejorando mucho la estabilidad del entorno.

Entorno de administración DSC en Windows

Versiones de Windows compatibles y consideraciones previas

Antes de lanzarte a automatizar la instalación de controladores USB con DSC, es fundamental saber qué sistemas operativos soportan esta tecnología de forma nativa. DSC está disponible en las versiones modernas de Windows a través de Windows Management Framework, cuya versión más utilizada en este contexto es la 5.1.

Entre las versiones de Windows compatibles con DSC para escenarios empresariales relacionados con controladores USB, servicios y configuraciones avanzadas, se encuentran:

  • Windows Server 2022
  • Windows Server 2019
  • Windows Server 2016
  • Windows 11
  • Windows 10

Estos sistemas incluyen ya por defecto la funcionalidad de Desired State Configuration en el propio sistema operativo, y se actualizan mediante Windows Management Framework. Lo habitual es que en entornos profesionales te encuentres con WMF 5.1, que aporta los cmdlets de PowerShell necesarios para crear, compilar y aplicar configuraciones DSC.

  Microsoft Security Essentials vs Windows Defender: diferencias, evolución y cuál elegir hoy

Conviene tener en cuenta una limitación importante: el producto independiente Microsoft Hyper-V Server no incorpora una implementación de DSC. Esto significa que no podrás administrarlo con DSC de la misma forma que un Windows Server completo, ni tampoco aprovechar Azure Automation State Configuration para esos hosts específicos.

En cambio, los sistemas Windows de escritorio como Windows 10 y Windows 11 son perfectamente válidos para definir y probar configuraciones DSC que luego se aplicarán en servidores o en otros equipos cliente. A efectos prácticos, suele ser buena idea desarrollar las configuraciones en un entorno de laboratorio, con el mismo sistema operativo que usas en producción, para evitar diferencias de comportamiento.

Compatibilidad de DSC con distintas versiones de Windows

Instalación de DSC y módulos necesarios

En la mayoría de los casos, no tendrás que instalar DSC como si fuera un producto aparte, porque DSC viene integrado en Windows. Lo que sí debes comprobar es que tu sistema tiene la versión adecuada de Windows Management Framework (idealmente, 5.1) y que PowerShell está actualizado.

Una vez verificado esto, el siguiente paso lógico es instalar los módulos de recursos DSC que vas a utilizar en tus configuraciones. Por defecto, Windows incluye módulos integrados con recursos de DSC (como el módulo estándar PSDesiredStateConfiguration), pero es muy habitual complementar estos recursos con paquetes adicionales publicados en la Galería de PowerShell.

Para ello utilizarás los cmdlets de PowerShellGet, que permiten descargar e instalar módulos desde repositorios online. Un ejemplo típico es el módulo PSDscResources, que amplía y actualiza varios recursos estándar. Un comando básico para instalarlo sería algo así como:

Install-Module 'PSDscResources' -Verbose

Este tipo de módulos resultan especialmente útiles cuando quieres trabajar con recursos más modernos y mantenidos, o cuando necesitas funcionalidades que no están incluidas en los recursos de DSC nativos. En el contexto de los controladores USB, a menudo se combinan recursos que gestionan paquetes, servicios, archivos, variables de entorno y ajustes de sistema que influyen en la detección y correcta carga de los drivers.

En entornos muy controlados (por ejemplo, sin acceso a internet), lo habitual es montar un repositorio interno de módulos, replicar allí los recursos necesarios y luego instalar desde ese repositorio en lugar de usar directamente la PowerShell Gallery pública. La lógica, en cualquier caso, es la misma: asegurarte de que todos los equipos que van a aplicar configuraciones DSC tengan los mismos recursos disponibles.

Creación de configuraciones DSC: de la teoría a un ejemplo práctico

El corazón de DSC son las configuraciones escritas en PowerShell, que describen el estado deseado de uno o varios nodos (equipos). En lugar de trabajar con scripts imperativos tradicionales, aquí usas la palabra clave Configuration para definir de forma declarativa qué quieres conseguir.

El flujo normal es sencillo: primero escribes la configuración en PowerShell, especificando los recursos DSC necesarios; luego la compilas en un documento MOF (Managed Object Format); y finalmente aplicas ese MOF a las máquinas objetivo. El MOF es el archivo que realmente consume el agente DSC de cada equipo.

Un ejemplo sencillo (no orientado aún a USB, sino a variables de entorno) podría ser una configuración como esta, donde se usa el módulo PSDscResources y el recurso Environment:

Configuration EnvironmentVariable_Path{ param () Import-DscResource -ModuleName 'PSDscResources' Node localhost { Environment CreatePathEnvironmentVariable { Name = 'TestPathEnvironmentVariable' Value = 'TestValue' Ensure = 'Present' Path = $true Target = @('Process', 'Machine') } }}EnvironmentVariable_Path -OutputPath:"./EnvironmentVariable_Path"

En este ejemplo se define una configuración llamada EnvironmentVariable_Path sin parámetros, se importan los recursos del módulo indicado, y se especifica que en el nodo localhost debe existir una variable de entorno con el nombre y valor establecidos. El atributo Path = $true indica que debe formar parte de la ruta, y Target determina el ámbito (proceso y máquina).

  Cómo instalar y gestionar extensiones del Explorador de archivos en Windows

Llevándolo al terreno de los controladores USB, la idea es similar: crear una configuración que incluya recursos para instalar el driver desde un paquete, registrar los archivos adecuados, ajustar posibles dependencias de servicios y definir variables o rutas necesarias para que el controlador funcione correctamente. La estructura interna de la configuración seguirá un patrón como el del ejemplo, pero con recursos específicos para drivers y paquetes.

Ejemplo de configuración DSC en PowerShell

Aplicación, consulta y limpieza de configuraciones en los equipos

Una vez que has definido tu configuración DSC y has generado el correspondiente archivo MOF, el siguiente paso es aplicarla a los equipos de destino. Para ello se utiliza el cmdlet Start-DscConfiguration, que toma como entrada la ruta a la carpeta donde resides el MOF de la configuración compilada.

Un ejemplo típico de aplicación de una configuración sería:

Start-DscConfiguration -Path 'C:\EnvironmentVariable_Path' -Wait -Verbose

El parámetro -Path indica la ubicación del MOF, -Wait hace que el comando espere a que termine la aplicación y -Verbose muestra en pantalla información detallada de lo que está haciendo DSC. En el contexto de los controladores USB, el proceso es el mismo: tu configuración puede encargarse de copiar archivos de driver, registrar componentes y configurar servicios, y DSC irá ejecutando cada recurso según se haya definido.

Para ver cómo está realmente el sistema en relación con una configuración, se usa el cmdlet Get-DscConfiguration. Este comando consulta el estado actual de la máquina y devuelve los valores que están aplicados ahora mismo, de forma que puedas comprobar si el equipo coincide con lo que defines en el MOF o si, por el contrario, hay desviaciones. Más información sobre el diagnóstico y solución de problemas en puertos USB puede ser útil para interpretar esos resultados.

Además, existe otro cmdlet importante, Get-DscLocalConfigurationManager, que devuelve la metaconfiguración del Local Configuration Manager (LCM) del equipo. El LCM es el componente interno que controla cada cuánto tiempo se aplican configuraciones, si se corrigen automáticamente los desvíos, cómo se comunica con servidores de configuración centralizados, etc. Si quieres, por ejemplo, que un grupo de equipos compruebe cada cierto tiempo si siguen teniendo instalados los controladores USB correctos, puedes ajustar estos parámetros.

En algunos momentos puede interesarte borrar la configuración actual aplicada a un equipo, por ejemplo para realizar pruebas o preparar un nuevo despliegue limpio. En ese caso, el cmdlet Remove-DscConfigurationDocument sirve para eliminar los documentos de configuración MOF asociados al LCM. Un uso típico sería:

Remove-DscConfigurationDocument -Stage Current -Verbose

Metaconfiguración y Local Configuration Manager

Además de las configuraciones “normales” que definen recursos en los equipos, DSC utiliza archivos MOF de metaconfiguración para ajustar el comportamiento del Local Configuration Manager. Esto es clave cuando gestionas muchos equipos que deben mantenerse sincronizados con una configuración central, incluyendo los controladores USB que compartan.

La metaconfiguración se aplica con el cmdlet Set-DSCLocalConfigurationManager, que requiere la ruta al MOF correspondiente. Un ejemplo habitual sería:

Set-DSCLocalConfigurationManager -Path 'c:\metaconfig\localhost.meta.mof' -Verbose

Con este comando actualizas cómo se comporta el LCM: puedes indicar si el equipo debe extraer su configuración de un pull server, si debe aplicar cambios automáticamente, con qué frecuencia revisar el estado o qué nivel de detalle de logging quieres mantener. En un escenario de múltiples equipos con drivers USB homogéneos, suele ser interesante que la metaconfiguración haga que los equipos revisen periódicamente su estado y reporten posibles errores.

Ajustar bien esta metaconfiguración te permite controlar mejor el ritmo de despliegue de controladores (por ejemplo, no instalar drivers críticos en horario de producción), el comportamiento ante fallos y la granularidad de la auditoría. En entornos regulados, esta capacidad de auditar instalaciones de controladores y cambios de configuración puede ser tan importante como el propio despliegue.

  Cómo comprimir y descomprimir archivos con comandos en Windows

Registros de eventos y diagnóstico de DSC

Como toda tecnología de automatización, DSC genera una cantidad considerable de información de registro. Los logs principales de DSC se almacenan en el visor de eventos de Windows, concretamente en el registro Microsoft-Windows-Dsc/Operational. Desde ahí puedes ver qué configuraciones se han aplicado, qué recursos han fallado y en qué momento.

Si necesitas más detalle, es posible habilitar otros registros adicionales pensados para depuración profunda. Aunque en la documentación oficial se explica con detalle cómo hacerlo, lo esencial es que puedes activar registros extra de DSC para seguir paso a paso la ejecución de los recursos, identificar problemas con módulos específicos o comprobar por qué un controlador USB no se ha instalado como esperabas.

En escenarios donde instalas y mantienes drivers USB en docenas de equipos, estos registros son cruciales para detectar patrones de error recurrentes, por ejemplo un paquete de driver corrupto, una dependencia de sistema ausente o un conflicto con otros controladores. DSC te deja esa trazabilidad en los eventos, de forma que puedas corregir el problema en la configuración y volver a desplegarla.

Uso real de DSC, casos de uso y alternativas

Durante un tiempo, a muchos administradores de sistemas les dio la sensación de que DSC iba a ser la herramienta estrella de automatización en Windows. Sin embargo, su adopción no ha sido tan masiva como se pensaba. Aun así, en bastantes organizaciones se utiliza de forma muy activa, especialmente en entornos con políticas de configuración estrictas.

Hay quien percibe DSC como una tecnología de la que no se habla tanto en comparación con soluciones más de moda, pero eso no significa que no tenga hueco. De hecho, se integra bien en estrategias de infraestructura como código y puede convivir sin problemas con herramientas como Ansible, Puppet, Chef o incluso con scripts PowerShell más tradicionales.

En cuanto a casos de uso sólidos, DSC encaja muy bien para mantener configuraciones homogéneas en servidores y estaciones de trabajo, incluyendo: instalación de paquetes, configuración de roles de Windows, ajuste de servicios, implantación de políticas locales y, por supuesto, despliegue controlado de determinados controladores como los USB. Para la implantación de políticas locales y control de dispositivos, DSC puede complementar las políticas de grupo y herramientas de gestión centralizada.

Respecto a las alternativas, entran en juego herramientas de configuración de propósito general (Ansible, Puppet, etc.), soluciones específicas de distribución de software (como SCCM/ConfigMgr o Intune) y scripts personalizados. Cada una tiene ventajas e inconvenientes, pero DSC destaca por estar profundamente integrado en el ecosistema Windows y por su modelo declarativo basado en recursos, que se ajusta muy bien a la idea de “estado deseado” que quieres mantener en tus equipos.

Para muchas empresas, DSC actúa como pieza complementaria dentro de una estrategia más amplia: puede encargarse de garantizar el estado de bajo nivel de Windows (roles, características, rutas, drivers) mientras otras herramientas gestionan aplicaciones complejas o procesos de despliegue más avanzados.

Cómo usar Virtual Here para compartir USB por la red
Artículo relacionado:
Cómo usar VirtualHere para compartir USB por la red: guía completa