# migrate-to-wifi.ps1 - Invoked by FlatUnattendW10-shopfloor.xml as Order 5 # during first logon, right after wait-for-internet.ps1 and right before # GCCH enrollment. Moves the machine off wired onto WiFi for the rest of # the imaging chain so the PXE ethernet cable can be safely disconnected. # # Gated: if there is no physical Wi-Fi adapter on the machine (tower / # desktop case), the whole migration is a no-op. Previously this step # disabled all wired adapters unconditionally and then waited for WiFi # internet that could never arrive on towers, hanging first logon forever. $wifi = Get-NetAdapter -Physical -ErrorAction SilentlyContinue | Where-Object { $_.InterfaceDescription -match 'Wi-?Fi|Wireless|WLAN|802\.11' } if (-not $wifi) { Write-Host 'No WiFi adapter - staying on ethernet.' -ForegroundColor Cyan exit 0 } Get-NetAdapter -Physical | Where-Object { $_.InterfaceDescription -notmatch 'Wi-?Fi|Wireless|WLAN|802\.11' } | Disable-NetAdapter -Confirm:$false $deadline = (Get-Date).AddMinutes(5) $ok = $false while ((Get-Date) -lt $deadline) { try { if (Test-NetConnection -ComputerName login.microsoftonline.us -Port 443 -InformationLevel Quiet -WarningAction SilentlyContinue) { $ok = $true break } } catch {} Start-Sleep -Seconds 5 } if ($ok) { Write-Host 'Internet confirmed over WiFi.' -ForegroundColor Green } else { Write-Host 'WiFi internet timeout - re-enabling ethernet.' -ForegroundColor Yellow Get-NetAdapter -Physical | Where-Object { $_.InterfaceDescription -notmatch 'Wi-?Fi|Wireless|WLAN|802\.11' } | Enable-NetAdapter -Confirm:$false } exit 0