【问题标题】:Detect BIOS from WinPE: Legacy or UEFI, using vbs // Outputting results from a .exe to .txt从 WinPE 检测 BIOS:Legacy 或 UEFI,使用 vbs // 将结果从 .exe 输出到 .txt
【发布时间】:2012-06-08 17:08:52
【问题描述】:

这是我的场景:

我的服务器有 2 种可能的配置:不需要特殊处理的 2-TB 硬盘或需要 UEFI BIOS 和 GPT 分区来启动操作系统的 3-TB 硬盘。

我正在尝试创建一个能够检测 BIOS 是“旧”还是“UEFI”并相应地执行部署脚本的单一安装 USB 密钥。

我努力寻找可以区分的 WMI,但无济于事。

我最接近解决方案的是这篇文章: http://social.technet.microsoft.com/Forums/en-US/winserverManagement/thread/6cbb488d-3062-4aad-b712-7a9e4d045b13

detectefi.exe 可以很好地检测 BIOS 类型,但是我无法输出它的结果,所以我不知道如何使用它。

我有两个问题:

  1. 是否有任何 WMI 可以用来区分我的 2 个设置。

  2. (如果问题 1 的答案是否定的)有没有办法将结果从 C++ 编译的 .exe 文件输出到 .txt 或任何其他形式并利用结果(我没有 C++ 技能完全)

【问题讨论】:

标签: c++ legacy bios efi


【解决方案1】:

如果有人对我如何解决问题感兴趣。我刚刚创建了一个链接到.exe的vbs

    Set objShell = CreateObject("WScript.Shell")
Set objWshScriptExec = objShell.Exec("detectefi.exe")
Set objStdOut = objWshScriptExec.StdOut

dim isLegacy
dim isUefi

isLegacy = false
isUefi = false

While Not objStdOut.AtEndOfStream
   strLine = objStdOut.ReadLine

   if strLine = "Legacy" then
      isLegacy = true
   end if

   if strLine = "UEFI" then
      isUefi = true
   end if
Wend


if isLegacy then
   wscript.echo "this is legacy"

    set objShell = Wscript.CreateObject("WScript.Shell")
    objShell.Run "2TBdeploy.cmd",1,True
    set objShell = Nothing

end if


if isUefi then
   wscript.echo "this is UEFI"

    set objShell = Wscript.CreateObject("WScript.Shell")
    objShell.Run "3TBdeploy.cmd",1,True
    set objShell = Nothing

end if

【讨论】:

  • 你介意告诉我你是如何将 vbs 文件链接到 exe 的吗?我对 VB 知之甚少,但您的解决方案似乎正是我想要的。我一直在寻找一种工具,我们可以在工作中使用它来检测/确认运行 UEFI 的系统的客户。谢谢,TB
【解决方案2】:

这很容易检测到,无需使用任何特殊实用程序,也无需使用 Windows 操作系统自带的命令行。

BCDEDIT /ENUM 将为您提供默认引导加载程序。这可以用来区分 UEFI 和 BIOS 机器,如下所示:

path                    \EFI\Microsoft\Boot\bootmgfw.efi

然后您可以使用oShell.Exec 处理输出,如上所述。

【讨论】:

    【解决方案3】:

    导入操作系统

    如果 os.path.exists("/sys/firmware/efi"): 打印“uefi” 别的: 打印“bios”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-06
      • 1970-01-01
      • 2016-11-11
      • 1970-01-01
      • 2018-11-27
      相关资源
      最近更新 更多