Preflight: check what PESetup fails on, before it fails on it
TWO SCRIPTS, DIFFERENT AUDIENCES
playbook/scripts/preflight.ps1 runs at the bay, called by startnet once the
media is mapped. It checks the four things that come straight out of PESetup's
own behaviour:
secure boot GatherDataSelection fails outright when SecurebootEnabled != 1
disk >= 120GB MinRequiredSpaceWithoutCompression is 128849018880
driver match reimplements GetDriverByModel - family filter, untrimmed
comma-separated substring tokens, first match wins - and checks
the pack is actually on the media
media age media expires 30 days after build; Media.tag's timestamp is the
local proxy
The driver check is the one that earns it. A miss is only a WARNING to PESetup,
so the bay images with no NIC, DNS fails at first boot, and enrollment cannot
reach the CDN - a symptom three steps removed from the cause. Advisory by
design: it reports and pauses on a blocker, the tech decides. Lives on the
enrollment share so it can be fixed without rebuilding boot.wim.
scripts/preflight.py runs on the server before a build day and aggregates
everything already built - driver catalogue lint, unattend lint, per-PCTYPE
media view verify - plus a new advisory firmware-coverage check that lists
catalogued models with no BIOS models.txt entry. That last one is how the
OptiPlex 7020 family sat uncovered: 127 catalogued models, 58 covered today.
First run: driver catalogues clean, all three unattends clean, firmware coverage
advisory only. PREFLIGHT PASSED.
Verified: both scripts parse clean (PowerShell parser / python), startnet parens
balance, every goto resolves, 915 CRLF lines with no bare LF. Deployed -
boot.wim md5 99fd3132, preflight.ps1 on the share.
This commit is contained in:
@@ -386,6 +386,22 @@ if exist "Y:\scripts\winpe-status-push.ps1" (
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "Y:\scripts\winpe-status-push.ps1"
|
||||
)
|
||||
|
||||
REM --- Pre-imaging checks ---------------------------------------------------
|
||||
REM Checks the things PESetup fails on, before it fails on them: secure boot
|
||||
REM (hard failure at GatherData), disk >= 120 GB, a driver pack matching THIS
|
||||
REM model, and media age. The driver check is the one that earns its keep - a
|
||||
REM miss is only a WARNING to PESetup, so the bay images with no NIC and the
|
||||
REM symptom shows up much later as a DNS failure during enrollment.
|
||||
REM Advisory: it reports and pauses on a blocker, it does not abort. The tech
|
||||
REM decides. Lives on the share so it can be fixed without a boot.wim rebuild.
|
||||
if exist "Y:\scripts\preflight.ps1" (
|
||||
powershell -NoProfile -ExecutionPolicy Bypass -File "Y:\scripts\preflight.ps1" -MediaDrive Z:
|
||||
if errorlevel 1 (
|
||||
echo Press any key to image anyway, or power off the bay to stop.
|
||||
pause >NUL
|
||||
)
|
||||
)
|
||||
|
||||
echo Waiting for PESetup.exe to start...
|
||||
:wait_start
|
||||
ping -n 3 127.0.0.1 >NUL
|
||||
|
||||
Reference in New Issue
Block a user