diff --git a/playbook/startnet.cmd b/playbook/startnet.cmd index ed84b70..9a0db0a 100644 --- a/playbook/startnet.cmd +++ b/playbook/startnet.cmd @@ -357,13 +357,23 @@ ping -n 11 127.0.0.1 >NUL if not exist W:\Windows\System32\config\system goto wait_enroll echo Found Windows at W: mkdir W:\Enrollment 2>NUL +REM Log all copy operations to a file that persists on the target disk. +REM Tech can check C:\Enrollment\winpe-staging.log post-imaging. +REM Each echo in the copy block below also appends to this file via +REM the >> redirect after the screen echo. robocopy /LOG+ appends its +REM own output directly. +set STAGELOG=W:\Enrollment\winpe-staging.log +echo [%DATE% %TIME%] WinPE staging started >> "%STAGELOG%" +echo PCTYPE=%PCTYPE% PPKG=%PPKG% MACHINENUM=%MACHINENUM% CMMID=%CMMID% >> "%STAGELOG%" REM --- Copy site config (drives site-specific values in all setup scripts) --- if exist "Y:\config\site-config.json" ( copy /Y "Y:\config\site-config.json" "W:\Enrollment\site-config.json" echo Copied site-config.json. + echo [%TIME%] Copied site-config.json >> "%STAGELOG%" ) else ( echo WARNING: site-config.json not found on enrollment share. + echo [%TIME%] WARNING: site-config.json not found >> "%STAGELOG%" ) REM --- Copy PPKG if selected (renames from SOURCE to BPRT-tagged filename) --- @@ -371,11 +381,14 @@ if "%PPKG%"=="" goto copy_pctype copy /Y "Y:\ppkgs\%SOURCE_PPKG%" "W:\Enrollment\%PPKG%" if errorlevel 1 ( echo WARNING: Failed to copy enrollment package. + echo [%TIME%] WARNING: Failed to copy PPKG %SOURCE_PPKG% >> "%STAGELOG%" goto copy_pctype ) +echo [%TIME%] Copied PPKG %SOURCE_PPKG% as %PPKG% >> "%STAGELOG%" copy /Y "Y:\scripts\run-enrollment.ps1" "W:\Enrollment\run-enrollment.ps1" copy /Y "Y:\scripts\wait-for-internet.ps1" "W:\Enrollment\wait-for-internet.ps1" copy /Y "Y:\scripts\migrate-to-wifi.ps1" "W:\Enrollment\migrate-to-wifi.ps1" +echo [%TIME%] Copied enrollment scripts >> "%STAGELOG%" REM --- Create enroll.cmd at drive root as manual fallback --- > W:\enroll.cmd ( @@ -429,33 +442,38 @@ mkdir W:\Enrollment\shopfloor-setup 2>NUL copy /Y "Y:\shopfloor-setup\backup_lockdown.bat" "W:\Enrollment\shopfloor-setup\backup_lockdown.bat" if exist "Y:\shopfloor-setup\Shopfloor" ( mkdir W:\Enrollment\shopfloor-setup\Shopfloor 2>NUL - robocopy "Y:\shopfloor-setup\Shopfloor" "W:\Enrollment\shopfloor-setup\Shopfloor" /E /MT:16 /R:1 /W:1 /NFL /NDL + robocopy "Y:\shopfloor-setup\Shopfloor" "W:\Enrollment\shopfloor-setup\Shopfloor" /E /MT:16 /R:1 /W:1 /NFL /NDL /LOG+:"%STAGELOG%" if errorlevel 8 echo WARNING: shopfloor-setup\Shopfloor robocopy exit %ERRORLEVEL% echo Copied Shopfloor baseline setup files. + echo [%TIME%] Copied Shopfloor baseline >> "%STAGELOG%" ) REM --- Always copy common/ (cross-PC-type GE-Enforce dispatcher + lib live here post-v2) --- if exist "Y:\shopfloor-setup\common" ( mkdir W:\Enrollment\shopfloor-setup\common 2>NUL - robocopy "Y:\shopfloor-setup\common" "W:\Enrollment\shopfloor-setup\common" /E /MT:16 /R:1 /W:1 /NFL /NDL + robocopy "Y:\shopfloor-setup\common" "W:\Enrollment\shopfloor-setup\common" /E /MT:16 /R:1 /W:1 /NFL /NDL /LOG+:"%STAGELOG%" if errorlevel 8 echo WARNING: shopfloor-setup\common robocopy exit %ERRORLEVEL% echo Copied common setup files. + echo [%TIME%] Copied common >> "%STAGELOG%" ) REM --- Copy _ntlars-backups (147 per-bay .reg files restored by gea-shopfloor-{collections,nocollections}\03-RestoreEDncConfig.ps1) --- REM Same root level as common/, referenced by 03-RestoreEDncConfig.ps1 via Join-Path $PSScriptRoot '..\_ntlars-backups'. if exist "Y:\shopfloor-setup\_ntlars-backups" ( mkdir W:\Enrollment\shopfloor-setup\_ntlars-backups 2>NUL - robocopy "Y:\shopfloor-setup\_ntlars-backups" "W:\Enrollment\shopfloor-setup\_ntlars-backups" /E /MT:16 /R:1 /W:1 /NFL /NDL + robocopy "Y:\shopfloor-setup\_ntlars-backups" "W:\Enrollment\shopfloor-setup\_ntlars-backups" /E /MT:16 /R:1 /W:1 /NFL /NDL /LOG+:"%STAGELOG%" if errorlevel 8 echo WARNING: _ntlars-backups robocopy exit %ERRORLEVEL% echo Copied _ntlars-backups. + echo [%TIME%] Copied _ntlars-backups >> "%STAGELOG%" ) REM --- Copy type-specific scripts on top of baseline --- if exist "Y:\shopfloor-setup\%PCTYPE%" ( mkdir "W:\Enrollment\shopfloor-setup\%PCTYPE%" 2>NUL - robocopy "Y:\shopfloor-setup\%PCTYPE%" "W:\Enrollment\shopfloor-setup\%PCTYPE%" /E /MT:16 /R:1 /W:1 /NFL /NDL + robocopy "Y:\shopfloor-setup\%PCTYPE%" "W:\Enrollment\shopfloor-setup\%PCTYPE%" /E /MT:16 /R:1 /W:1 /NFL /NDL /LOG+:"%STAGELOG%" if errorlevel 8 echo WARNING: shopfloor-setup\%PCTYPE% robocopy exit %ERRORLEVEL% echo Copied %PCTYPE% setup files. + echo [%TIME%] Copied %PCTYPE% type-specific >> "%STAGELOG%" ) else ( echo WARNING: No setup files found for PC type %PCTYPE%. + echo [%TIME%] WARNING: No setup files for %PCTYPE% >> "%STAGELOG%" ) REM --- Stage preinstall bundle (apps installed locally to save Azure bandwidth) --- @@ -464,16 +482,18 @@ if exist "Y:\pre-install\preinstall.json" ( mkdir W:\PreInstall\installers 2>NUL copy /Y "Y:\pre-install\preinstall.json" "W:\PreInstall\preinstall.json" if exist "Y:\pre-install\installers" ( - robocopy "Y:\pre-install\installers" "W:\PreInstall\installers" /E /MT:16 /R:1 /W:1 /NFL /NDL + robocopy "Y:\pre-install\installers" "W:\PreInstall\installers" /E /MT:16 /R:1 /W:1 /NFL /NDL /LOG+:"%STAGELOG%" if errorlevel 8 echo WARNING: pre-install\installers robocopy exit %ERRORLEVEL% echo Staged preinstall bundle to W:\PreInstall. + echo [%TIME%] Staged preinstall bundle >> "%STAGELOG%" ) else ( echo WARNING: Y:\pre-install\installers not found - preinstall.json staged without installers. ) if exist "Y:\pre-install\udc-backups" ( - robocopy "Y:\pre-install\udc-backups" "W:\PreInstall\udc-backups" /E /MT:16 /R:1 /W:1 /NFL /NDL + robocopy "Y:\pre-install\udc-backups" "W:\PreInstall\udc-backups" /E /MT:16 /R:1 /W:1 /NFL /NDL /LOG+:"%STAGELOG%" if errorlevel 8 echo WARNING: pre-install\udc-backups robocopy exit %ERRORLEVEL% echo Staged UDC settings backups to W:\PreInstall\udc-backups. + echo [%TIME%] Staged UDC backups >> "%STAGELOG%" ) ) else ( echo No preinstall bundle on PXE server - skipping. @@ -489,9 +509,10 @@ REM unified GE-Enforce dispatcher takes over from the share for ongoing updates. if /i not "%PCTYPE%"=="gea-shopfloor-cmm" goto skip_cmm_stage if exist "Y:\installers-post\cmm\cmm-manifest.json" ( mkdir W:\CMM-Install 2>NUL - robocopy "Y:\installers-post\cmm" "W:\CMM-Install" /E /MT:16 /R:1 /W:1 /NFL /NDL + robocopy "Y:\installers-post\cmm" "W:\CMM-Install" /E /MT:16 /R:1 /W:1 /NFL /NDL /LOG+:"%STAGELOG%" if errorlevel 8 echo WARNING: cmm robocopy exit %ERRORLEVEL% echo Staged CMM bootstrap to W:\CMM-Install. + echo [%TIME%] Staged CMM bootstrap >> "%STAGELOG%" ) else ( echo WARNING: Y:\cmm-installers not found - CMM PC cannot install Hexagon apps at imaging time. ) @@ -510,9 +531,10 @@ if "%KEYENCEMODEL%"=="" goto skip_keyence_stage if exist "Y:\installers-post\keyence\%KEYENCEMODEL%\manifest.json" ( mkdir W:\KeyenceInstall 2>NUL mkdir W:\KeyenceInstall\%KEYENCEMODEL% 2>NUL - robocopy "Y:\installers-post\keyence\%KEYENCEMODEL%" "W:\KeyenceInstall\%KEYENCEMODEL%" /E /MT:16 /R:1 /W:1 /NFL /NDL + robocopy "Y:\installers-post\keyence\%KEYENCEMODEL%" "W:\KeyenceInstall\%KEYENCEMODEL%" /E /MT:16 /R:1 /W:1 /NFL /NDL /LOG+:"%STAGELOG%" if errorlevel 8 echo WARNING: keyence\%KEYENCEMODEL% robocopy exit %ERRORLEVEL% echo Staged Keyence %KEYENCEMODEL% bootstrap to W:\KeyenceInstall\%KEYENCEMODEL%\. + echo [%TIME%] Staged Keyence %KEYENCEMODEL% >> "%STAGELOG%" ) else ( echo WARNING: Y:\installers-post\keyence\%KEYENCEMODEL% not found - Keyence %KEYENCEMODEL% cannot install at imaging time. ) @@ -583,6 +605,7 @@ goto skip_waxtrace_stage echo WARNING: Y:\installers-post\waxtrace not found - WaxTrace PC cannot install FormTracePak at imaging time. :skip_waxtrace_stage :pctype_done +if defined STAGELOG echo [%TIME%] WinPE staging complete >> "%STAGELOG%" REM --- BIOS update sub-stage push (fires AFTER W: copies complete) --- REM check-bios.cmd drops X:\bios-fired.flag iff it actually flashed or