# Run-ShopfloorSetup.ps1 — Dispatcher for shopfloor PC type setup # Runs Shopfloor baseline scripts first, then type-specific scripts on top. # Cancel any pending reboot so it doesn't interrupt setup shutdown -a 2>$null # Prompt user to unplug from PXE switch before re-enabling wired adapters Write-Host "" Write-Host "========================================" -ForegroundColor Yellow Write-Host " UNPLUG the ethernet cable from the" -ForegroundColor Yellow Write-Host " PXE imaging switch NOW." -ForegroundColor Yellow Write-Host "========================================" -ForegroundColor Yellow Write-Host "" Write-Host "Press any key to continue..." -ForegroundColor Yellow $null = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown") # Re-enable wired adapters Get-NetAdapter -Physical | Where-Object { $_.InterfaceDescription -notmatch 'Wi-Fi|Wireless' } | Enable-NetAdapter -Confirm:$false -ErrorAction SilentlyContinue $enrollDir = "C:\Enrollment" $typeFile = Join-Path $enrollDir "pc-type.txt" $setupDir = Join-Path $enrollDir "shopfloor-setup" if (-not (Test-Path $typeFile)) { Write-Host "No pc-type.txt found - skipping shopfloor setup." exit 0 } $pcType = (Get-Content $typeFile -First 1).Trim() if (-not $pcType) { Write-Host "pc-type.txt is empty - skipping shopfloor setup." exit 0 } Write-Host "Shopfloor PC Type: $pcType" # --- Run Shopfloor baseline scripts first --- $baselineDir = Join-Path $setupDir "Shopfloor" if (Test-Path $baselineDir) { $scripts = Get-ChildItem -Path $baselineDir -Filter "*.ps1" -File | Sort-Object Name foreach ($script in $scripts) { shutdown /a 2>$null Write-Host "Running baseline: $($script.Name)" try { & $script.FullName } catch { Write-Warning "Baseline script $($script.Name) failed: $_" } } } # --- Run type-specific scripts (if not just baseline Shopfloor) --- if ($pcType -ne "Shopfloor") { $typeDir = Join-Path $setupDir $pcType if (Test-Path $typeDir) { $scripts = Get-ChildItem -Path $typeDir -Filter "*.ps1" -File | Sort-Object Name foreach ($script in $scripts) { shutdown /a 2>$null Write-Host "Running $pcType setup: $($script.Name)" try { & $script.FullName } catch { Write-Warning "Script $($script.Name) failed: $_" } } } else { Write-Host "No type-specific scripts found for $pcType." } } Write-Host "Shopfloor setup complete for $pcType." # Copy utility scripts to SupportUser desktop $syncScript = Join-Path $setupDir "Shopfloor\sync_intune.bat" if (Test-Path $syncScript) { Copy-Item -Path $syncScript -Destination "C:\Users\SupportUser\Desktop\sync_intune.bat" -Force Write-Host "sync_intune.bat copied to desktop." } # Set auto-logon to expire after 2 more logins reg add "HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon" /v AutoLogonCount /t REG_DWORD /d 2 /f | Out-Null Write-Host "Auto-logon set to 2 remaining logins." Write-Host "Rebooting in 10 seconds..." shutdown /r /t 10