# Nombre del Script: hw_auditoria.ps1 # Función: Captura hardware esencial (Serial, CPU, RAM, Disco, SO) y lo copia al portapapeles en formato JSON. # ============================================================================== # 1. CAPTURA DE DATOS DEL SISTEMA # ============================================================================== # 1.1 Información de la Placa Base (para el serial) try { $BiosInfo = Get-CimInstance -ClassName Win32_BIOS -ErrorAction Stop | Select-Object -ExpandProperty SerialNumber $SystemInfo = Get-CimInstance -ClassName Win32_ComputerSystem -ErrorAction Stop | Select-Object Manufacturer, Model } catch { $BiosInfo = "N/A" $SystemInfo = @{ Manufacturer="N/A"; Model="N/A" } } # 1.2 Información del CPU $CpuInfo = Get-CimInstance -ClassName Win32_Processor | Select-Object -ExpandProperty Name | Select-Object -First 1 # 1.3 Obtener RAM total (convertir de bytes a GB) $RamBytes = (Get-CimInstance -ClassName Win32_PhysicalMemory | Measure-Object -Property Capacity -Sum).Sum if ($RamBytes) { $RamGB = [math]::Round($RamBytes / 1GB, 0) $RamValue = "$RamGB GB" } else { $RamValue = "N/A" } # 1.4 Obtener información del disco principal (asumimos C:) try { $DiskInfo = Get-CimInstance -ClassName Win32_LogicalDisk -Filter "DeviceID='C:'" -ErrorAction Stop | Select-Object -ExpandProperty Size $DiskGB = [math]::Round($DiskInfo / 1GB, 0) $DiskValue = "$DiskGB GB" } catch { $DiskValue = "N/A" } # 1.5 Obtener Sistema Operativo $OsInfo = Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -ExpandProperty Caption # ============================================================================== # 2. CONSTRUCCIÓN Y TRANSFERENCIA JSON # ============================================================================== # 2.1 Construir el objeto de resultados $HardwareData = @{ serial = $BiosInfo brand = $SystemInfo.Manufacturer model = $SystemInfo.Model cpu = $CpuInfo.Trim() ram = $RamValue disk = $DiskValue os = $OsInfo } # 2.2 Convertir a JSON $JsonData = $HardwareData | ConvertTo-Json -Depth 5 -Compress # 2.3 Copiar al portapapeles $JsonData | Set-Clipboard # 2.4 Mostrar mensaje de éxito al usuario (en la consola) Write-Host " " Write-Host "==========================================================" Write-Host "DATOS CAPTURADOS CON ÉXITO Y COPIADOS AL PORTAPAPELES." Write-Host "==========================================================" Write-Host "Vuelva a la aplicación web de Nubifica ControlIT y péguelos." Write-Host " " # Solo para depuración: # Write-Host "Contenido JSON Copiado: $($JsonData)"