本文目录导读:

获取系统引导方式(Legacy BIOS 或 UEFI)可以使用多种脚本方法,具体取决于操作系统,以下是常见系统的脚本实现:
Windows
PowerShell 脚本
# 方法1:使用 bcdedit
$bcdedit = bcdedit /enum {current} | Select-String "path"
if ($bcdedit -match "\\Windows\\System32\\winload\.efi") {
Write-Output "引导方式: UEFI"
} elseif ($bcdedit -match "\\Windows\\System32\\winload\.exe") {
Write-Output "引导方式: Legacy BIOS"
} else {
Write-Output "无法确定引导方式"
}
# 方法2:检查系统分区类型
$disk = Get-Disk | Where-Object {$_.IsSystem -eq $true}
if ($disk.PartitionStyle -eq "GPT") {
Write-Output "引导方式: UEFI (GPT分区表)"
} elseif ($disk.PartitionStyle -eq "MBR") {
Write-Output "引导方式: Legacy BIOS (MBR分区表)"
}
# 方法3:检查固件变量
$firmware = Get-ComputerInfo -Property BiosFirmwareType
if ($firmware.BiosFirmwareType -eq "Uefi") {
Write-Output "引导方式: UEFI"
} else {
Write-Output "引导方式: Legacy BIOS"
}
Batch 脚本 (CMD)
@echo off
bcdedit /enum {current} | findstr /i "winload.efi" >nul
if %errorlevel%==0 (
echo 引导方式: UEFI
) else (
echo 引导方式: Legacy BIOS
)
Linux
Bash 脚本
#!/bin/bash
# 方法1:检查 /sys/firmware/efi 目录
if [ -d /sys/firmware/efi ]; then
echo "引导方式: UEFI"
else
echo "引导方式: Legacy BIOS"
fi
# 方法2:检查 efivars 文件系统
if [ -d /sys/firmware/efi/efivars ]; then
echo "引导方式: UEFI"
fi
# 方法3:检查 dmesg 输出
if dmesg | grep -i "efi" | grep -q "EFI v"; then
echo "引导方式: UEFI"
fi
# 方法4:使用 efibootmgr (需要安装)
if command -v efibootmgr &> /dev/null; then
efibootmgr > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "引导方式: UEFI"
else
echo "引导方式: Legacy BIOS"
fi
fi
macOS
Shell 脚本
#!/bin/bash
# 方法1:使用 system_profiler
if system_profiler SPHardwareDataType | grep -q "Boot ROM Version"; then
echo "引导方式: UEFI (由 macOS 的 Boot ROM 处理)"
fi
# 方法2:检查 NVRAM (适用于基于 Intel 的 Mac)
if nvram -p | grep -q "boot-args"; then
echo "系统使用 EFI 引导"
fi
# 方法3:检查磁盘分区表类型
diskutil list | grep -q "GUID_partition_scheme"
if [ $? -eq 0 ]; then
echo "磁盘使用 GPT 分区表 (UEFI 引导)"
fi
跨平台 Python 脚本
import sys
import os
import platform
def check_boot_mode():
system = platform.system().lower()
if system == "windows":
import ctypes
# 使用 Windows API 检测固件类型
GetFirmwareType = ctypes.windll.kernel32.GetFirmwareType
firmware_type = ctypes.c_uint32()
GetFirmwareType(ctypes.byref(firmware_type))
# 0: BIOS, 1: UEFI, 2: Max
if firmware_type.value == 1:
return "UEFI"
else:
return "Legacy BIOS"
elif system == "linux":
# 检查 EFI 目录
if os.path.exists("/sys/firmware/efi"):
return "UEFI"
else:
return "Legacy BIOS"
elif system == "darwin": # macOS
# macOS 默认使用 UEFI
return "UEFI"
else:
return "Unknown"
if __name__ == "__main__":
print(f"系统引导方式: {check_boot_mode()}")
快速判断方法总结
Linux: 检查 /sys/firmware/efi 目录是否存在
Windows: 检查 bcdedit 输出中的 winload.efi vs winload.exe
macOS: 现代 Mac 默认使用 UEFI(EFI 引导)
这些脚本可以轻松集成到自动化部署、系统信息收集或故障排查工具中,选择最适合你使用场景的方法即可。