Hardware coverage: flag models the server has no drivers or BIOS for
WinPE now reports each machine's WMI model, manufacturer, Dell system
SKU and BIOS version to /hardware/seen (winpe-status-push.ps1, best
effort, wmic only). The webapp records every model seen and checks it
against what the server has:
- each image's Deploy/Control/HardwareDriver.json, matched exactly as
PESetup's GetDriverByModel does (as reimplemented in
lint-driver-catalogue.py), plus whether the pack's zip is on disk;
- the WinPE BIOS manifest (substring match like check-bios.cmd).
/hardware lists every model with per-image driver status and BIOS
status. A model missing a Win11 pack or a BIOS entry becomes item 5 on
the Technician To-Do (and the banner count) until the pack/BIOS is added
or it is dismissed. Virtual machines are ignored.
Also deploys the repo winpe-status-push.ps1 over the live copy, which
predated the -CurrentStage/-StageIndex parameters startnet.cmd passes
for the BIOS-flash stage, so that status post was failing.
This commit is contained in:
@@ -74,4 +74,36 @@ try {
|
||||
Log "ERR $($_.Exception.Message)"
|
||||
}
|
||||
|
||||
# Hardware facts for the webapp's driver/BIOS coverage check (/hardware):
|
||||
# the exact WMI model PESetup matches driver packs on, the Dell system SKU
|
||||
# (what Dell's catalogs key on), and the BIOS version check-bios.cmd sees.
|
||||
function Get-WmicValue {
|
||||
param([string]$Class, [string]$Property)
|
||||
try {
|
||||
$line = (& wmic $Class get $Property /value 2>$null |
|
||||
Where-Object { $_ -match '=' } | Select-Object -First 1)
|
||||
if ($line) { return ($line -split '=', 2)[1].Trim() }
|
||||
} catch { Log "wmic $Class $Property exception: $_" }
|
||||
return ''
|
||||
}
|
||||
$hw = @{
|
||||
serial = $serial
|
||||
model = Get-WmicValue 'computersystem' 'Model'
|
||||
manufacturer = Get-WmicValue 'computersystem' 'Manufacturer'
|
||||
sku = Get-WmicValue 'computersystem' 'SystemSKUNumber'
|
||||
bios_version = Get-WmicValue 'bios' 'SMBIOSBIOSVersion'
|
||||
pctype = $PCType
|
||||
}
|
||||
Log "hardware model=$($hw.model) sku=$($hw.sku) bios=$($hw.bios_version)"
|
||||
if ($hw.model) {
|
||||
try {
|
||||
$resp = Invoke-WebRequest -Uri "http://${PxeServer}:${Port}/hardware/seen" -Method POST `
|
||||
-Body ($hw | ConvertTo-Json -Compress) -ContentType 'application/json' `
|
||||
-UseBasicParsing -TimeoutSec $TimeoutSec -ErrorAction Stop
|
||||
Log "hardware OK http=$($resp.StatusCode)"
|
||||
} catch {
|
||||
Log "hardware ERR $($_.Exception.Message)"
|
||||
}
|
||||
}
|
||||
|
||||
exit 0
|
||||
|
||||
Reference in New Issue
Block a user