Hardware Diagnostics es una herramienta profesional de diagnóstico e inventario de hardware desarrollada en PowerShell.
Genera un reporte HTML moderno, responsivo y detallado que permite obtener un inventario completo del hardware instalado, analizar el estado general del sistema y generar recomendaciones técnicas basadas en la información detectada.
El proyecto utiliza una arquitectura modular, tolerante a fallos y orientada a funcionar 100 % offline, sin depender de servicios web para ejecutar el diagnóstico.
- Inventario detallado del hardware del sistema.
- Recolección de información mediante CIM/WMI.
- Arquitectura modular y desacoplada.
- Inyección de dependencias entre componentes.
- Diagnóstico automático del sistema.
- Sistema de puntuación del estado general.
- Generación de recomendaciones técnicas.
- Evaluación del estado de la BIOS.
- Base de conocimiento local para versiones de BIOS.
- Comparación de versiones de BIOS.
- Distinción entre versiones estables y versiones Beta.
- Tratamiento conservador de hardware desconocido.
- Funcionamiento completamente offline.
- Generación de reportes HTML profesionales.
- Diseño moderno y responsivo.
- Interfaz con modo claro y oscuro.
- Tarjetas visuales organizadas por componente.
- Tablas de información técnica.
- Separación visual entre hardware y detalles técnicos.
- Conservación íntegra de identificadores técnicos largos.
- Registro de fecha y hora del análisis.
- Medición de la duración de la ejecución.
- Tolerancia a fallos parciales durante la recolección.
- Apertura automática del reporte después de finalizar el diagnóstico.
- Compatibilidad con Windows PowerShell 5.1.
- Compatibilidad con PowerShell 7+.
- No requiere conexión a Internet.
Hardware Diagnostics recopila y analiza información de diferentes componentes del sistema.
- Nombre del equipo.
- Fabricante.
- Modelo.
- Usuario.
- Sistema operativo.
- Fecha y hora del análisis.
- Tiempo total de ejecución.
- Modelo.
- Fabricante.
- Arquitectura.
- Socket.
- Frecuencia actual y máxima.
- Núcleos físicos.
- Hilos lógicos.
- Caché L2 y L3.
- Voltaje.
- Virtualización.
- Estado del hardware.
- Memoria total instalada.
- Uso actual.
- Módulos instalados.
- Slots disponibles.
- Capacidad máxima soportada.
- Fabricante.
- Capacidad por módulo.
- Velocidad.
- Tipo de memoria.
- Formato.
- Identificación de cada módulo.
El proyecto incluye una base de conocimiento local:
Modules/Data/MemoryManufacturers.json
Esta información permite complementar la identificación de fabricantes de memoria cuando los datos proporcionados por Windows son incompletos o poco descriptivos.
- Fabricante.
- Producto.
- Versión.
- Número de serie.
- Estado.
- Hosting Board.
- Capacidad de reemplazo.
- Fabricante.
- Versión.
- Fecha.
- Modo de arranque.
- Versión SMBIOS.
- Número de serie.
- Estado.
- BIOS primaria.
- Información SMBIOS.
El diagnóstico de BIOS permite distinguir entre:
- Versión instalada.
- Versión estable conocida.
- Versiones Beta.
- Situaciones en las que no existe información suficiente para determinar una actualización.
- Compatibilidad.
- Estado de habilitación.
- Tecnología disponible.
- Intel VT-x.
- SLAT.
- DEP/NX.
- Estado del hipervisor.
- Entorno virtual.
- Fabricante.
- Procesador gráfico.
- VRAM.
- Resolución.
- Frecuencia.
- Driver.
- Fecha del driver.
- Estado.
- PNP Device ID.
- Fabricante.
- Modelo.
- Conexión.
- Resolución nativa.
- Frecuencia.
- Tamaño.
- Número de serie.
- Año de fabricación.
- Semana de fabricación.
La información de red se presenta individualmente por adaptador.
Incluye:
- Fabricante.
- Tipo de conexión.
- Estado.
- Dirección MAC.
- Velocidad de enlace.
- IPv4.
- IPv6.
- Gateway.
- DNS.
- DHCP.
- SSID.
- Señal.
- Banda.
- Seguridad.
- Canal.
- Radio.
- Velocidad de recepción.
- Velocidad de transmisión.
- BSSID.
Se contemplan adaptadores:
- Ethernet.
- Wi-Fi.
- Adaptadores virtuales.
- Wi-Fi Direct.
Cada dispositivo de audio se presenta individualmente.
Incluye:
- Nombre del dispositivo.
- Fabricante.
- Estado.
- PNP ID.
Cada dispositivo USB se analiza individualmente.
Incluye:
- Nombre.
- Fabricante.
- Categoría.
- Estado.
- VID/PID.
- PNP ID.
También se analiza la infraestructura USB, incluyendo hubs y root hubs detectados.
Detecta los adaptadores Bluetooth físicos disponibles y determina su estado.
El análisis de almacenamiento incluye:
- SSD.
- HDD.
- Tipo de interfaz.
- Capacidad.
- Fabricante.
- Modelo.
- Formato.
- Bus.
- Firmware.
- Número de serie.
- Estado de salud.
El reporte proporciona además:
- Resumen de almacenamiento.
- Total instalado.
- Número de SSD.
- Número de HDD.
- Tabla general de discos.
- Tarjetas individuales para cada unidad.
- Información técnica detallada de cada disco.
Hardware Diagnostics no se limita a recopilar información.
El sistema analiza los datos obtenidos y genera un diagnóstico automático.
Entre las comprobaciones se incluyen:
- Cantidad de memoria RAM.
- Capacidad del procesador.
- Estado de la BIOS.
- Existencia de unidades SSD.
- Existencia de unidades HDD.
- Presencia de GPU dedicada.
- Configuración general del sistema.
- Capacidad de almacenamiento.
El resultado se presenta mediante indicadores visuales:
[OK]
[i]
El sistema también genera una puntuación general del estado del equipo.
A partir de la versión v2.0.0, Hardware Diagnostics utiliza una arquitectura modular orientada a mejorar la mantenibilidad, extensibilidad y robustez del proyecto.
La arquitectura separa las responsabilidades de recolección, procesamiento, diagnóstico y presentación.
Es el punto principal de ejecución.
Sus responsabilidades incluyen:
- Inicialización del entorno.
- Carga de módulos.
- Preparación de dependencias.
- Recolección de información.
- Coordinación de collectors.
- Ejecución de diagnósticos.
- Construcción del reporte.
- Guardado del HTML.
- Apertura automática del reporte.
La estructura principal está organizada de forma modular:
HardwareDiagnostics/
│
├── HardwareDiagnostics.ps1
│
├── Modules/
│ ├── Collectors/
│ ├── Core/
│ ├── Data/
│ ├── Diagnostics/
│ ├── Helpers/
│ └── Html/
│
├── Assets/
├── lanzador/
│ ├── HardwareDiagnosticsLauncher.csproj
│ ├── HardwareDiagnostics.Payload.zip
│ ├── Program.cs
│ ├── build.cmd
│ └── icon.ico
├── Output/
├── publish/
└── README.md
Contiene los módulos encargados de recopilar información del hardware.
Cada collector se especializa en un componente concreto del sistema.
Contiene la lógica central del proyecto, incluyendo procesos relacionados con:
- Ejecución.
- Configuración.
- Persistencia.
- Gestión del reporte.
Contiene información local utilizada por el diagnóstico.
Ejemplo:
MemoryManufacturers.json
Contiene la lógica utilizada para evaluar el estado del sistema y generar recomendaciones.
Contiene funciones auxiliares reutilizables.
Contiene la capa responsable de construir el reporte HTML.
Esta capa incluye la construcción de:
- Encabezado.
- Tarjetas.
- Tablas.
- Bloques de información.
- Detalles técnicos.
- Secciones del sistema.
- Almacenamiento.
- Diagnóstico.
- About.
Contiene los recursos visuales utilizados por el reporte.
Contiene el proyecto encargado de generar el ejecutable portable de Hardware Diagnostics.
El lanzador encapsula los recursos necesarios del diagnóstico dentro de un ejecutable Windows, permitiendo distribuir la herramienta como una aplicación de un solo archivo.
El ejecutable utiliza un icono Windows multiresolución para proporcionar una representación adecuada en diferentes tamaños de visualización.
Contiene la versión compilada del ejecutable destinada a pruebas y distribución.
El archivo principal generado es:
HardwareDiagnostics.exe
---
## Flujo de procesamiento
La arquitectura sigue una separación de responsabilidades similar a:
```text
Collectors
│
▼
Core
│
▼
Diagnostics
│
▼
HTML
Esta separación permite modificar la presentación sin alterar los collectors y ampliar el diagnóstico sin tener que reconstruir todo el sistema.
El reporte generado se encuentra en:
Output/HardwareReport.html
El diseño está orientado a proporcionar una lectura clara de la información obtenida.
La interfaz utiliza:
- Encabezado principal.
- Resumen del sistema.
- Tarjetas horizontales.
- Bloques de información.
- Tablas técnicas.
- Jerarquía visual.
- Separación entre componentes.
- Indicadores de estado.
- Secciones independientes.
- Diseño responsivo.
- Soporte para modo claro y oscuro.
Los componentes principales se presentan mediante tarjetas individuales para evitar mezclar información de diferentes dispositivos.
El reporte incluye una sección About con información sobre la herramienta.
Incluye:
- Nombre del proyecto.
- Descripción.
- Versión.
- Plataforma.
- Tecnología.
- Modo de operación.
- Autor.
- Ubicación.
- Año.
La sección forma parte de la interfaz visual del reporte y utiliza los recursos gráficos incluidos en el proyecto.
El proyecto está diseñado para trabajar correctamente con contenido UTF-8.
El reporte prioriza etiquetas y textos de interfaz en inglés para reducir problemas de representación entre diferentes configuraciones regionales de Windows.
Los valores que provienen directamente del sistema operativo o de los controladores pueden conservar la denominación proporcionada por Windows o por el fabricante. Por este motivo, determinados nombres de dispositivos pueden aparecer en el idioma configurado en el equipo analizado.
Compatible con:
Windows PowerShell 5.1
Compatible con:
PowerShell 7+
Diseñado para sistemas Windows capaces de proporcionar información de hardware mediante CIM/WMI.
Hardware Diagnostics está diseñado para funcionar 100 % offline.
El diagnóstico no requiere:
- API externas.
- Servidores remotos.
- Servicios web.
- Conexión a Internet.
- Descarga de información durante la ejecución.
La información necesaria para el diagnóstico se obtiene directamente del sistema y de los recursos locales incluidos en el proyecto.
Abra PowerShell en el directorio raíz del proyecto.
powershell.exe -NoProfile -ExecutionPolicy Bypass -File .\HardwareDiagnostics.ps1pwsh.exe -NoProfile -ExecutionPolicy Bypass -File .\HardwareDiagnostics.ps1También puede ejecutarse directamente desde PowerShell:
.\HardwareDiagnostics.ps1Al finalizar correctamente, se genera:
Output\HardwareReport.html
El reporte puede abrirse automáticamente en el navegador después de finalizar el diagnóstico.
Nota: si PowerShell bloquea la ejecución de scripts por la política de ejecución del equipo, debe utilizarse una configuración de ejecución compatible con las políticas de seguridad de Windows. No se recomienda modificar la política del sistema más allá de lo necesario.
=============================================
Hardware Diagnostics v2.0.0
=============================================
Collecting system information...
Report generated successfully:
Output\HardwareReport.html
Hardware Diagnostics incluye un lanzador ejecutable autocontenido para Windows.
El ejecutable portable estará disponible en la sección Releases del repositorio de GitHub.
No es necesario instalar PowerShell, .NET ni copiar manualmente la estructura completa del proyecto para utilizar la versión portable.
El ejecutable se distribuye como un archivo único, ejecuta PowerShell en segundo plano y genera automáticamente el informe HTML de diagnóstico.
El lanzador permite ejecutar la herramienta mediante un único archivo:
Estado: Firmado digitalmente.
Nota: El ejecutable será firmado digitalmente para proporcionar una mayor garantía de autenticidad e integridad del archivo.
HardwareDiagnostics.exe
---
## Características de robustez
El proyecto está diseñado para continuar funcionando aunque determinados componentes del sistema no proporcionen toda la información disponible.
Entre los mecanismos utilizados se encuentran:
- Manejo de errores.
- Valores predeterminados.
- Tratamiento de información no disponible.
- Tolerancia a fallos parciales.
- Separación entre recolección y presentación.
- Collectors independientes.
- Diagnóstico desacoplado.
- Generación del reporte incluso cuando determinados datos no están disponibles.
Cuando Windows no proporciona un dato, el reporte puede mostrar:
```text
Not available
en lugar de interrumpir todo el diagnóstico.
Las versiones oficiales de Hardware Diagnostics se publicarán mediante GitHub Releases.
Cada release incluirá el ejecutable portable correspondiente a esa versión.
Hardware Diagnostics utiliza principalmente:
- PowerShell
- CIM
- WMI
- HTML
- CSS
- JavaScript
- JSON
- C# / .NET 8
- Windows Forms
- Single-file publishing
No requiere frameworks externos para realizar el diagnóstico principal.
El proyecto busca combinar tres objetivos principales:
Obtener información real del sistema y analizar su estado.
Presentar de forma organizada los componentes físicos y lógicos detectados.
Convertir la información recopilada en un reporte HTML profesional, claro y fácil de interpretar.
La separación entre estas responsabilidades permite:
- Modificar la presentación sin alterar los collectors.
- Ampliar el diagnóstico sin reconstruir todo el sistema.
- Incorporar nuevos componentes de hardware.
- Mantener una arquitectura organizada.
- Facilitar el mantenimiento y evolución del proyecto.
Versión actual:
v2.0.0
Estado:
Ready for release
El proyecto incluye actualmente:
- Diagnóstico PowerShell modular.
- Reporte HTML offline.
- Lanzador Windows autocontenido.
- Distribución mediante un único archivo `.exe`.
- Icono Windows multiresolución.
- Preparación para firma digital del ejecutable.
La versión 2.0.0 incluye:
- Arquitectura modular.
- Diagnóstico automático.
- Sistema de puntuación.
- Recomendaciones técnicas.
- Base de conocimiento local.
- Generación de reporte HTML profesional.
- Funcionamiento completamente offline.
- Compatibilidad con Windows PowerShell 5.1.
- Compatibilidad con PowerShell 7+.
Antes de realizar cambios importantes, se recomienda revisar la arquitectura existente para mantener la separación entre:
Collectors
↓
Core
↓
Diagnostics
↓
HTML
Las modificaciones de la interfaz HTML deben evitar alterar innecesariamente la lógica de recolección del hardware.
Hardware Diagnostics genera información a partir del sistema local.
El reporte puede contener información técnica potencialmente identificable, como:
- Nombre del equipo.
- Nombre de usuario.
- Direcciones MAC.
- Direcciones IP.
- Números de serie.
- Identificadores PNP.
- Identificadores de dispositivos.
Por este motivo, antes de publicar un reporte HTML generado por la herramienta, se recomienda revisar su contenido y eliminar cualquier información personal o identificable que no se desee compartir públicamente.
El funcionamiento offline evita que la información del diagnóstico tenga que enviarse a servicios externos durante la ejecución. Sin embargo, el archivo HTML generado puede contener información identificable y debe tratarse con precaución al compartirlo.
Este proyecto se distribuye bajo la licencia MIT.
Las contribuciones, sugerencias y mejoras son bienvenidas.
Si encuentras un problema o tienes una idea, puedes abrir un issue o pull request.
Walter Pablo Téllez Ayala
Software Developer
📍 Bolivia 🇧🇴
📧 pharmakoz@gmail.com
© 2026 — Hardware Diagnostics
Diagnóstico.
Inventario.
Análisis.
Todo desde PowerShell y sin depender de Internet.

