怎么用脚本获取系统引导方式

wen 实用脚本 1

本文目录导读:

怎么用脚本获取系统引导方式

  1. Windows
  2. Linux
  3. macOS
  4. 跨平台 Python 脚本
  5. 快速判断方法总结

获取系统引导方式(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 引导)

这些脚本可以轻松集成到自动化部署、系统信息收集或故障排查工具中,选择最适合你使用场景的方法即可。

抱歉,评论功能暂时关闭!