Bundles drift left uncommitted from prior sessions and the UDC matrix
verify entry added today.
Drift items (all per session-progress.md, completed in earlier sessions
but never staged):
- playbook/check-bios.cmd (deleted, moved to BIOS/check-bios.cmd)
- playbook/migrate-to-wifi.ps1 (made no-op 2026-04-24 after the dnsmasq
no-gateway fix removed the wired-NIC race that motivated it)
- playbook/preinstall/oracle/Install-Oracle11r2.cmd (post-OUI .ora copy
added 2026-04-24)
- playbook/preinstall/oracle/tnsnames.ora (live tnsnames, 469 KB,
deployed alongside the wrapper 2026-04-24)
- playbook/pxe_server_setup.yml (dnsmasq dhcp-option=3,6 commented,
Oracle .ora deploy task added 2026-04-24)
- playbook/shopfloor-setup/BIOS/{check-bios.cmd, models.txt} (BIOS
detection refinements)
- playbook/shopfloor-setup/Shopfloor/Force-Lockdown.bat
- playbook/shopfloor-setup/Shopfloor/Monitor-IntuneProgress.ps1
- playbook/shopfloor-setup/Shopfloor/SetShopfloorAutoLogon.bat (new)
- playbook/shopfloor-setup/Shopfloor/09-Install-PrinterInstallerMap.ps1
(new, places PrinterInstallerMap.exe + Public Desktop shortcut at
imaging time; manifest entry self-heals on tamper)
- playbook/shopfloor-setup/Shopfloor/lib/Show-IntuneDeviceQR.ps1 (new,
standalone QR rendering for site that wanted just that piece)
- playbook/shopfloor-setup/gea-shopfloor-collections/{Install-eMxInfo.cmd.template,
Restore-UDCData.ps1} (these were uncommitted in pre-rename Standard/;
git mv didn't catch them because they were untracked at the time)
- docs/shopfloor-machine-imaging-guide.md (operator-facing how-to)
Matrix:
- common.test/matrix.json: add UDC verify entry to gea-shopfloor-collections
row. Surfaces UDC silent-install issue (item H pending) instead of
letting it pass silently.
.gitignore:
- PrinterInstallerMap.exe (142 MB) excluded. Track via LFS or stage on
PXE server only - too big for regular git history. Untouched on disk
so existing local copy still works.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
11 KiB
Shopfloor Machine PC Imaging Guide
Step-by-step for imaging a new (or replacement) shopfloor PC that will sit at a CNC machine and run UDC, eDNC, NTLARS, MTConnect, and the standard shopfloor toolset.
Prerequisites
- PC connected to the PXE switch (not the production network yet)
- USB mouse + keyboard connected
- PXE server is running and reachable (verify by pinging
10.9.100.1from another PC on the same switch) - Target machine number known (e.g.,
7605) — you can enter it at PXE time, or use9999as a placeholder if the PC will be configured at the bay later - ARTS Lockdown request submitted for this PC (or know that you'll submit one mid-imaging)
Step 1: BIOS Configuration
- Plug the PC into the KVM.
- Power on the PC and begin tapping F12 to bring up the One-Time-Boot menu.
- Select BIOS Setup.
- Toggle Advanced Setup to ENABLED.
- Click Boot Configuration:
- Verify Enable Secure Boot is ENABLED
- Verify Enable Microsoft UEFI CA is ENABLED
- Click Storage and verify SATA/NVMe Operation is set to AHCI/NVMe.
- If this is a Precision Tower: click Security and ENABLE "Start Data Wipe" (wipes existing data on next boot).
- Click Apply Changes, then Exit.
Step 2: PXE Boot
- Begin tapping F12 again to return to the One-Time-Boot menu.
- Verify the network cable is connected to the PXE Server's isolated switch (NOT the production network).
- From the One-Time-Boot menu, select ONBOARD NIC (IPV4).
- Once the PXE Boot menu appears, select Windows PE (Image Deployment).
- WinPE launches with a command prompt that automatically updates the BIOS to the latest version before prompting you to select the image type.
Step 3: Image + Enrollment Selection
- WinPE Setup Menu: select
3. GEA Shopfloor. - GCCH Enrollment Profile: select
1. No Office(machine PCs don't need Office). - Shopfloor PC Type: select
6. Standard. - Standard PC Sub-Type: select
1. Machine. - Machine number prompt:
- If the PC's target bay is known: type the machine number (e.g.,
7605) and press Enter. - If the bay isn't known yet: just press Enter to use placeholder
9999. You'll set the real number after the PC is physically placed at the bay (see Step 9).
- If the PC's target bay is known: type the machine number (e.g.,
Step 4: Imaging (Automated Phase)
Once GE Image Setup launches:
- Click Start.
- The process runs unattended through:
- Disk partition + Windows install
- PreInstall apps (Oracle Client 11.2, OpenText HostExplorer, VC++ Redists, eDNC if Standard-Machine, UDC, etc.)
- GE-Enforce framework registration
- First reboot
- Note the Serial Number from the screen — log it in your tracking sheet.
- The PC reboots and auto-logs in as
SupportUser. The "Shopfloor Intune Sync" PowerShell window opens automatically.
This whole phase takes ~20-40 minutes depending on hardware.
Step 5: Monitor Intune Enrollment
Once the Shopfloor Intune Sync window is open, you'll see a 5-phase status table that refreshes every 30 seconds:
1. Intune Registration [WAITING/IN PROGRESS/COMPLETE]
2. Device Configuration [WAITING/IN PROGRESS/COMPLETE]
3. Software Deployment [WAITING/IN PROGRESS/COMPLETE]
4. Credential Setup [WAITING/IN PROGRESS/COMPLETE]
5. Lockdown [WAITING/IN PROGRESS/COMPLETE]
Below the table, an Intune Device ID + QR code appears. Scan the QR with your phone to copy the device ID into your ARTS Lockdown request.
What to do at each phase
- Phase 1 → COMPLETE: a
>> Select Device Category in Intune portalhint appears. Action: in Intune, set the Device Category toShopfloor(or whatever your site uses). - Phase 2 → COMPLETE: just keep watching.
- Phase 3 → IN PROGRESS forever: known issue — the DSC
device-config.yamldownload is currently failing with a 403. It does NOT block setup-complete — Phases 4 and 5 are independent. Skip ahead. - Phase 4 → COMPLETE: SFLD share creds landed in registry. A
>> Initiate ARTS Lockdown requesthint appears if you haven't already. - Phase 5 → COMPLETE: lockdown applied via Intune Remediation. The script auto-fires "Setup Complete" and reboots the PC.
If Phase 5 stays WAITING for >30 minutes after Phase 4 completes, see Step 6.
Step 6: Force Lockdown (only if needed)
If Phase 5 is stuck WAITING for 30+ minutes after Phase 4 completed AND the ARTS Lockdown request is approved:
- Open an elevated cmd or PowerShell.
- Run:
C:\Enrollment\shopfloor-setup\Shopfloor\Force-Lockdown.bat - It self-elevates via UAC, prompts for confirmation:
Type YES (uppercase) to confirm ARTS request is in place: YES - The script runs
sfld_autologon.ps1, flips Winlogon to ShopFloor autologon, and writesC:\Enrollment\force-lockdown-applied.txton success. - Within 30 seconds, the Intune Sync window's Phase 5 flips to COMPLETE → "Setup Complete" → reboot.
WARNING: Do NOT run Force-Lockdown without an approved ARTS request. It bypasses the normal Intune Lockdown-group push and will be flagged in the audit trail.
Step 7: Post-Reboot — ShopFloor Autologon Phase
After the lockdown reboot, the PC auto-logs in as ShopFloor (instead of SupportUser).
What happens automatically:
- WiFi profile (
AESFMASSID) lands via Intune. - PC connects to AESFMA.
S:drive maps to\\tsgwp00525.wjs.geaerospace.net\shared.- GE Shopfloor Machine Apps Enforce scheduled task fires on logon.
- Manifest engine reads
\\tsgwp00525\...\common\manifest.jsonAND\\tsgwp00525\...\standard-machine\manifest.json, evaluates each app entry against current state, runs installer if not detected. - Apps installed/verified: Adobe Acrobat Reader DC, WJF Defect Tracker, 3OF9 barcode font, Edge IE-Mode site list + policy, VNC firewall rule, Oracle Client 11.2, OpenText HostExplorer ShopFloor, UDC, eDNC + NTLARS, eMxInfo.txt, MTConnect Fanuc/OKUMA/Makino/eDNC variants (per machine number).
- May take 5-15 minutes on first logon (cold app installs); subsequent logons skip-and-validate in <30 seconds.
You can watch progress in C:\GE Aerospace\machineapps-enforce.log.
Step 8: Move to the Bay
Physically move the PC to its target machine. Plug into the production ethernet (NOT the PXE switch).
If the PC doesn't have an assigned machine number yet, or if you used 9999 placeholder at PXE time, continue to Step 9.
If you entered the real machine number at PXE time, Configure-PC.ps1 already wrote it to UDC, eDNC, the DNC registry, and MTConnect Devices.xml automatically — skip to Step 10.
Step 9: Set Machine Number (only if 9999 placeholder was used)
- Log in as SupportUser (admin).
- Run from Desktop or Start Menu:
(which calls
Set Machine Number.lnkC:\Enrollment\shopfloor-setup\Standard\Set-MachineNumber.ps1) - Type the new machine number (digits only) when the GUI prompts.
- Click OK. The script:
- Stops UDC, writes the new number to UDC settings JSON, relaunches UDC
- Writes the new number to eDNC registry (
HKLM:\SOFTWARE\WOW6432Node\GE Aircraft Engines\DNC\General\MachineNo) - Pulls the per-machine eDNC
.regbackup from\\tsgwp00525\...\ntlars-backups\<num>.reg(restores eFocas/PPDCS/Hssb config for that machine) - Updates MTConnect
Devices.xmlfor any installed agent (Fanuc/Okuma/Makino/eDNC) and restarts the agent service
- A summary dialog confirms what was updated.
Step 10: Verify the Machine
Before signing off, confirm the PC is healthy:
# Service health
Get-Service | Where-Object { $_.Name -match '^(MTConnect|Makino|MakinoMTConnect|MTConnect eDNC|MTConnect Adapter|UDC|DNC)' } |
Format-Table Name, Status, StartType -AutoSize
# Machine number persisted everywhere
"UDC: $((Get-Content 'C:\ProgramData\UDC\udc_settings.json' -Raw | ConvertFrom-Json).GeneralSettings.MachineNumber)"
"eDNC: $((Get-ItemProperty 'HKLM:\SOFTWARE\WOW6432Node\GE Aircraft Engines\DNC\General' -Name MachineNo).MachineNo)"
# MTConnect HTTP probe (depends on variant - port 5000 for Fanuc/OKUMA, 5001 for eDNC, 5005 for UDC)
Invoke-WebRequest 'http://localhost:5000/probe' -UseBasicParsing -TimeoutSec 3 | Select StatusCode
# Manifest engine ran cleanly
Get-Content 'C:\GE Aerospace\machineapps-enforce.log' -Tail 20
Expected healthy state:
- All MTConnect/UDC/DNC services: Running + Auto start type
- UDC + eDNC machine numbers: match the assigned bay
- HTTP probe: HTTP 200 with a
<MTConnectDevices>XML response - Manifest enforce log: ends with
evaluation complete: N entries, 0 failures(or similar)
Troubleshooting
Intune Sync window closes by itself
It writes C:\Logs\SFLD\sync_intune_transcript.txt continuously. Open that log to see what it last reported. Re-launch via:
C:\Enrollment\shopfloor-setup\Shopfloor\sync_intune.bat
Phase 3 stuck at IN PROGRESS
Known issue — the DSC blob download is 403'ing right now. Doesn't block setup-complete. If you need DSC's wallpaper / start menu pins / FileSystem actions, escalate to IT to fix the SAS token or storage account firewall on geasfldwestjefferson. Until then, those visual customizations won't appear — operators won't notice if the start menu pins are absent because they're not the primary workflow.
Phase 5 (Lockdown) stays WAITING after 30 minutes
ARTS request is probably still pending. Confirm approval, then run Force-Lockdown.bat (Step 6).
Manifest engine logs show "DllNotFoundException" or "share not reachable"
PC isn't on AESFMA WiFi yet (or WiFi profile hasn't pushed). Wait 5-10 minutes after the post-lockdown reboot. Verify:
(Get-NetConnectionProfile).Name
Test-Path '\\tsgwp00525.wjs.geaerospace.net\shared\dt\shopfloor\common\manifest.json'
If Test-Path returns False, WiFi/auth isn't ready. If True, kick the manifest engine manually:
Start-ScheduledTask -TaskName 'GE Shopfloor Machine Apps Enforce'
MTConnect not running after machine-number set
The wrapper logs land at C:\GE Aerospace\mtc-install-runservice-batconvert.log. Common causes: pre-existing Windows Firewall Block rule (rare), Mark-of-the-Web on copied EXEs (the wrapper's Unblock-File sweep handles this), or the bundle isn't on the SFLD share for this variant. Open the log and grep for ERROR.
Configure-PC machine-number GUI doesn't open
The script needs a desktop session. Won't run via WinRM/SSH/non-interactive. Make sure you're logged in at the console as SupportUser.
Reference
- PXE server:
10.9.100.1 - SFLD share:
\\tsgwp00525.wjs.geaerospace.net\shared\dt\shopfloor\ - Manifest engine log:
C:\GE Aerospace\machineapps-enforce.log - Intune sync transcript:
C:\Logs\SFLD\sync_intune_transcript.txt - DSC logs:
C:\Logs\SFLD\(DSCDeployment.log, DSCInstall.log, version.txt) - Per-app install logs:
C:\Logs\SFLD\Install-*.log - Force-Lockdown marker:
C:\Enrollment\force-lockdown-applied.txt - Set-MachineNumber script:
C:\Enrollment\shopfloor-setup\Standard\Set-MachineNumber.ps1