Hi Jarod B,
Can you run this script in PowerShell admin, it doesn't change any settings but might point to where you need to adjust your system to convert to EFI without re-installing.
# Requires admin rights
If (-NOT ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole] "Administrator")) {
Write-Warning "Please run this script as Administrator."
Exit
}
# Setup
$timestamp = Get-Date -Format "yyyy-MM-dd_HH-mm-ss"
$logPath = "$env:TEMP\MBR2GPT_Check_$timestamp.log"
$diskpartScript = "$env:TEMP\disklayout.txt"
# Helper: Log and display
function Log {
param([string]$message)
Write-Host $message
Add-Content -Path $logPath -Value $message
}
# Step 1: Create DiskPart script
@"
select disk 0
list partition
exit
"@ | Set-Content $diskpartScript
# Step 2: Show disk layout
Log "`n=== Disk Layout ==="
$diskpartOutput = diskpart /s $diskpartScript 2>&1
$diskpartOutput | ForEach-Object { Log $_ }
# Step 3: Check BitLocker status
Log "`n=== BitLocker Status (C:) ==="
$bitlockerOutput = manage-bde -status C: 2>&1
$bitlockerOutput | ForEach-Object { Log $_ }
# Step 4: Run MBR2GPT validation
Log "`n=== MBR2GPT Validation ==="
$validation = Start-Process -FilePath "mbr2gpt.exe" -ArgumentList "/validate /disk:0 /allowFullOS" -Wait -PassThru -NoNewWindow -RedirectStandardOutput "$env:TEMP\mbr2gpt_out.txt" -RedirectStandardError "$env:TEMP\mbr2gpt_err.txt"
# Log MBR2GPT output
Get-Content "$env:TEMP\mbr2gpt_out.txt","$env:TEMP\mbr2gpt_err.txt" | ForEach-Object { Log $_ }
# Step 5: Decision logic
if ($validation.ExitCode -eq 0) {
Log "`n✅ Validation passed. You can now run:"
Log " mbr2gpt /convert /disk:0 /allowFullOS"
Log "Then reboot and switch BIOS to UEFI mode."
} else {
Log "`n❌ Validation failed. Review the output above for details."
Log "Common issues include:"
Log "- Disk is already GPT or not MBR"
Log "- Not enough unallocated space for EFI partition"
Log "- BitLocker not suspended"
Log "- OS partition not set as active"
}
# Final note
Log "`n📝 Full log saved to: $logPath"