Phase 3+4 rename reorg: repo dir renames + startnet.cmd menu
Pairs with Phase 1+2 from earlier (alias maps in Install-FromManifest,
GE-Enforce, Get-PCProfile, verify-state). See project-shopfloor-rename-reorg
memory for the plan.
Phase 3 (repo + paths):
- git mv per-PC-type dirs to gea-shopfloor-* names:
Standard -> gea-shopfloor-collections
CMM -> gea-shopfloor-cmm
Keyence -> gea-shopfloor-keyence
Genspect -> gea-shopfloor-genspect
WaxAndTrace -> gea-shopfloor-waxtrace
Display -> gea-shopfloor-display
Lab -> gea-shopfloor-common (folded; Timeclock+Lab merge)
- New gea-shopfloor-nocollections/ (clone of collections sans UDC scripts).
- New gea-shopfloor-heattreat/ (placeholder, README only).
- Move Standard/ntlars-backups/ -> _ntlars-backups/ (per-MN, not per-type).
- Run-ShopfloorSetup.ps1: Resolve-PCTypeDir helper walks alias group when
the on-disk dir for the current pcType is missing. Set-MachineNumber
helper-copy gated on collections|nocollections|legacy Standard-Machine.
- Update-MachineNumber.ps1: pcProfiles lookups try gea-shopfloor-collections
first, fall back to legacy Standard-Machine. PowerShell 5.1 compatible
(no null-coalesce).
Phase 4 (startnet.cmd menu):
- Choice 3 "GEA Shopfloor" now drills into a 9-item sub-menu instead of
going straight to enrollment. Sub-cats:
1. Machine with Collections -> gea-shopfloor-collections
2. Machine without Collections -> gea-shopfloor-nocollections
3. Common (Timeclock, Lab) -> gea-shopfloor-common
4. Keyence -> gea-shopfloor-keyence
5. CMM -> gea-shopfloor-cmm
6. Genspect -> gea-shopfloor-genspect
7. Heattreat -> gea-shopfloor-heattreat
8. Wax and Trace -> gea-shopfloor-waxtrace
9. Display -> gea-shopfloor-display
- Office menu (existing 6-option) follows for every sub-cat.
- Machine number prompt only for collections + nocollections.
- pc-subtype.txt + display-type.txt no longer written. PCTYPE is a
single full string (gea-shopfloor-*); subtype-aware code paths fall
back to empty and resolve via the alias map.
- CMM bootstrap stage gate switched from "%PCTYPE%"=="CMM" to
"%PCTYPE%"=="gea-shopfloor-cmm".
Test harness:
- B-enforce/run.sh PCSUBTYPE default changed from "Machine" to "" so
single-arg invocation matches the new single-string scheme. Two-arg
legacy form ("Standard Machine") still works via aliasing.
- B-enforce/tamper.ps1 alias-aware Test-MatrixEntryMatches mirroring
verify-state.ps1.
Smoke-tested on win11 VM as SYSTEM via qga: B-enforce harness 5-phase
cycle (stage / baseline / tamper / heal / idempotent) passes 10/10
with PCType=gea-shopfloor-collections AND with legacy "Standard Machine"
two-arg form.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -117,10 +117,42 @@ if (Test-Path $baselineDir) {
|
||||
}
|
||||
}
|
||||
|
||||
# --- PCType dir alias resolution (2026-05-04 rename reorg) -------------
|
||||
# Fleet PCs may have pc-type.txt = legacy "Standard"/"CMM"/etc OR new
|
||||
# gea-shopfloor-* names. Repo dirs have been renamed to new names; this
|
||||
# helper resolves either form to the actual on-disk dir under $setupDir.
|
||||
$pcTypeDirAliases = @(
|
||||
@('Standard', 'gea-shopfloor-collections', 'gea-shopfloor-nocollections'),
|
||||
@('Standard-Machine', 'gea-shopfloor-collections', 'gea-shopfloor-nocollections'),
|
||||
@('Standard-Timeclock', 'gea-shopfloor-common'),
|
||||
@('CMM', 'gea-shopfloor-cmm'),
|
||||
@('Keyence', 'gea-shopfloor-keyence'),
|
||||
@('Lab', 'gea-shopfloor-common'),
|
||||
@('WaxAndTrace', 'gea-shopfloor-waxtrace'),
|
||||
@('Genspect', 'gea-shopfloor-genspect'),
|
||||
@('Display', 'gea-shopfloor-display'),
|
||||
@('Heattreat', 'gea-shopfloor-heattreat')
|
||||
)
|
||||
function Resolve-PCTypeDir {
|
||||
param([string]$BaseDir, [string]$Name)
|
||||
$primary = Join-Path $BaseDir $Name
|
||||
if (Test-Path $primary) { return $primary }
|
||||
foreach ($g in $pcTypeDirAliases) {
|
||||
if ($g -icontains $Name) {
|
||||
foreach ($alias in $g) {
|
||||
if ($alias -ieq $Name) { continue }
|
||||
$candidate = Join-Path $BaseDir $alias
|
||||
if (Test-Path $candidate) { return $candidate }
|
||||
}
|
||||
}
|
||||
}
|
||||
return $null
|
||||
}
|
||||
|
||||
# --- Run type-specific scripts (if not just baseline Shopfloor) ---
|
||||
if ($pcType -ne "Shopfloor") {
|
||||
$typeDir = Join-Path $setupDir $pcType
|
||||
if (Test-Path $typeDir) {
|
||||
$typeDir = Resolve-PCTypeDir -BaseDir $setupDir -Name $pcType
|
||||
if ($typeDir -and (Test-Path $typeDir)) {
|
||||
# Only run numbered scripts (01-eDNC.ps1, 02-MachineNumberACLs.ps1).
|
||||
# Unnumbered .ps1 files (Set-MachineNumber.ps1) are desktop tools,
|
||||
# not installer scripts, and must not auto-run during setup.
|
||||
@@ -173,14 +205,23 @@ foreach ($tool in @('sync_intune.bat', 'Configure-PC.bat', 'Force-Lockdown.bat',
|
||||
}
|
||||
}
|
||||
|
||||
# Standard-Machine PCs get the UDC/eDNC machine number helper. Timeclock
|
||||
# PCs do not use a machine number, so the helper has nothing to do there.
|
||||
if ($pcType -eq "Standard" -and $pcSubType -ne "Timeclock") {
|
||||
foreach ($helper in @("Set-MachineNumber.bat", "Set-MachineNumber.ps1")) {
|
||||
$src = Join-Path $setupDir "Standard\$helper"
|
||||
if (Test-Path $src) {
|
||||
Copy-Item -Path $src -Destination "C:\Users\SupportUser\Desktop\$helper" -Force
|
||||
Write-Host "$helper copied to SupportUser desktop."
|
||||
# Machine-number-using PC types (collections + nocollections, plus their
|
||||
# legacy Standard-Machine alias) get the Set-MachineNumber helper on the
|
||||
# SupportUser desktop. Timeclock / Lab / common variants don't use a
|
||||
# machine number, so the helper has nothing to do there.
|
||||
$needsMachineNumberHelper = $false
|
||||
if ($pcType -ieq 'Standard' -and $pcSubType -ne 'Timeclock') { $needsMachineNumberHelper = $true }
|
||||
if ($pcType -ieq 'gea-shopfloor-collections' -or $pcType -ieq 'gea-shopfloor-nocollections') { $needsMachineNumberHelper = $true }
|
||||
if ($needsMachineNumberHelper) {
|
||||
$helperSrc = Resolve-PCTypeDir -BaseDir $setupDir -Name 'gea-shopfloor-collections'
|
||||
if (-not $helperSrc) { $helperSrc = Resolve-PCTypeDir -BaseDir $setupDir -Name 'Standard' }
|
||||
foreach ($helper in @('Set-MachineNumber.bat', 'Set-MachineNumber.ps1')) {
|
||||
if ($helperSrc) {
|
||||
$src = Join-Path $helperSrc $helper
|
||||
if (Test-Path $src) {
|
||||
Copy-Item -Path $src -Destination "C:\Users\SupportUser\Desktop\$helper" -Force
|
||||
Write-Host "$helper copied to SupportUser desktop."
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user