goCMM showed an empty parts list after restore though the bay reached the share.
Decompiled goCMM: PartGroupViewModel matches the registry Selected Part Group
against ApplicationSettings.xml <PartGroup FullName> with a CASE-SENSITIVE compare,
then enumerates that FullName for the parts. The host-canon rewrite fixed only the
hostname, leaving xml '\shared' (lowercase) vs registry '\SHARED' (uppercase) ->
Find null -> SelectedPartGroup null -> empty list. Fix spans the share segment too,
pinning both to \tsgwp00525.wjs.geaerospace.net\SHARED. Verified in PowerShell
(-ceq True). Runs at imaging in Restore-CMM, so all captured backups are fixed on
restore with no re-backup.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- lib Install-FromManifest 2.5->2.6: add _CmmVersion per-entry filter (reads
C:\Enrollment\cmm\version.txt). Lifted the version gate out of 09-Setup-CMM
into the shared lib so imaging and GE-Enforce apply it identically and cannot
drift (root cause of PC-DMIS 2016 installing on every CMM).
- Install-goCMMSettings: canonicalize the part-group share host to the FQDN in
both the registry and ApplicationSettings.xml. Handles bare \\tsgwp00525\ and
the legacy rd.ds.ge.com domain; idempotent. VM-tested.
- Report-AssetToShopDB: resolve the machine number eDNC registry first, then fall
back to C:\Enrollment\machine-number.txt (matches the lib resolution order) so
a freshly imaged PC still reports its number for the PC-machine relationship.
- Add Update-CMMEnforcer.ps1/.bat: update one CMM's local lib to the gated
version and self-heal its PC-DMIS version.
- Add Debug-ShopDBReporting.ps1/.bat: one-shot reporter triage (preconditions,
client log, live test POST, verdict).
- Add Verify-And-Heal-Staging.ps1/.bat: post-boot check that every imaging
payload arrived and re-pull anything missing from the share, including the CMM
bundle and the selected bay's backup (the payload that times out in WinPE).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
Adds the PC-DMIS settings/probe backup-restore set alongside the existing
goCMM scripts, plus a single combined CMM backup and the diagnostics built
while debugging the live bays:
- Backup-PCDMISSettings / Install-PCDMISSettings: capture+restore PC-DMIS
registry + data/probe/cal files per installed version (2016/2019/2026).
Hardened from real-bay failures: detect install dir via Program Files
fallback; capture compens.dat (not just comp.dat) + interfac.dll; identify
the controller by hash-matching interfac.dll to its source DLL AND reading
the PE OriginalFilename (covers rename-without-copy); EXCLUDE the whole
Homepage state (Recent/Favorites/DetailsView) which null-refs PC-DMIS on
launch via stale routine paths; restore routes HKCU into the target user's
hive (-TargetUser ShopFloor), fails loud on a non-backup path, and applies
the legacy->new FQDN rewrite across reg + data files incl .bas.
- Backup-CMM: one wrapper running goCMM + PC-DMIS (all versions) into one
per-CMM folder + index, for staging on PXE and restore-by-machine-number.
- Clear-PCDMISRecent: fixes the Homepage recent-list NullReferenceException
crash on an already-broken bay.
- pcdmis-probe-debug / Export-PCDMISCrashEvents: diagnostics for the
custom-probe-not-showing and crash investigations.
- Modify-PCDMISRights / Grant-FullControl: grant the operator the registry +
filesystem access PC-DMIS needs under lockdown.
- Install-goCMMSettings: add .bas to the FQDN-rewrite include list.
Not yet wired into 09-Setup-CMM auto-restore - staging + the gated restore
block come next.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
goCMM settings live in two places: 3 pointer values at
HKLM\SOFTWARE\WOW6432Node\General Electric\goCMM, and the real content of all
7 Settings tabs (PC-DMIS, Quindos, Modus, Machine Definition, User Input,
Notifications, Part Groups) in C:\geaofi\ApplicationSettings.xml. Capture-replay
pair, mirroring the Wax/Trace Backup/Install scripts:
- Backup-goCMMSettings.ps1/.bat: on a live legacy bay (admin), zips the registry
key + the C:\geaofi tree (minus transient LocalProgramCopies/logs) to
gocmm_backup_<PC>_<ts>.zip.
- Install-goCMMSettings.ps1/.bat: restore at imaging (admin). Imports the key +
lays down C:\geaofi, then grants BUILTIN\Users WriteKey on the reg key and
Modify on C:\geaofi - goCMM's RegistrySettings.GetRegistryString opens the key
with writable:true even to READ, so a locked-down operator throws a
SecurityException without the grant (the post-lockdown 'registry access not
allowed' error). Applies a built-in legacy->new FQDN rewrite
(rd.ds.ge.com -> wjs.geaerospace.net) automatically across the registry values
and ApplicationSettings.xml (incl PartGroup FullName); -NoDefaultRewrite skips
it, /replace adds an extra pair, -SelectedPartGroup overrides per bay.
- gocmm-debug.ps1/.bat: run as the operator to reproduce the SecurityException
and dump the goCMM key ACL (confirms whether lockdown stripped the grant).
All round-trip + FQDN-rewrite verified on the win11 VM. NOTE: covers goCMM only;
PC-DMIS probe calibrations / custom tip angles / machine comp are owned by
PC-DMIS (Hexagon) and not captured here. Not yet wired into 09-Setup-CMM
auto-discovery.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>