From 707a0f94c2f0fa687a954b35420d3dd3ecad97f5 Mon Sep 17 00:00:00 2001 From: cproudlock Date: Mon, 4 May 2026 17:12:55 -0400 Subject: [PATCH] GE-Enforce: prefer DNC reg MachineNo over machine-number.txt machine-number.txt holds the imaging-time MN. PCs imaged with placeholder 9999 (tech intends to flip via Set-MachineNumber later) keep 9999 in that file even after Update-MachineNumber writes the real MN to HKLM:\...\Dnc\General\MachineNo. Status.json was reporting 9999 across the fleet because of this. Now reads DNC reg first; only falls back to machine-number.txt if reg is missing or also 9999. Existing convergence-check.txt unchanged. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../shopfloor-setup/common/GE-Enforce.ps1 | 20 +++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/playbook/shopfloor-setup/common/GE-Enforce.ps1 b/playbook/shopfloor-setup/common/GE-Enforce.ps1 index 56603fc..36b0f2c 100644 --- a/playbook/shopfloor-setup/common/GE-Enforce.ps1 +++ b/playbook/shopfloor-setup/common/GE-Enforce.ps1 @@ -280,10 +280,26 @@ try { } } + # Prefer DNC reg (authoritative post-Update-MachineNumber) over + # machine-number.txt (imaging-time placeholder, often 9999 if tech + # imaged with placeholder + bay assignment came later). $machineNumber = '' try { - if (Test-Path 'C:\Enrollment\machine-number.txt') { - $machineNumber = (Get-Content 'C:\Enrollment\machine-number.txt' -First 1 -ErrorAction SilentlyContinue).Trim() + $regPaths = @( + 'HKLM:\SOFTWARE\WOW6432Node\GE Aircraft Engines\Dnc\General', + 'HKLM:\SOFTWARE\GE Aircraft Engines\Dnc\General' + ) + foreach ($rp in $regPaths) { + if (Test-Path $rp) { + $v = (Get-ItemProperty -Path $rp -Name MachineNo -ErrorAction SilentlyContinue).MachineNo + if ($v -and $v -ne '9999') { $machineNumber = "$v"; break } + } + } + # Fall back to enrollment file (will be 9999 for placeholder PCs) + if (-not $machineNumber) { + if (Test-Path 'C:\Enrollment\machine-number.txt') { + $machineNumber = (Get-Content 'C:\Enrollment\machine-number.txt' -First 1 -ErrorAction SilentlyContinue).Trim() + } } } catch {}