如何使用 PowerShell 查看和更改 BIOS (UEFI) 设置

Jacki

您可以使用 PowerShell 查看或更改 Windows 计算机上的 BIOS/UEFI 设置。在本文中,我们将了解如何使用 Windows PowerShell 获取或更改普通计算机和流行品牌设备(HP、Lenovo、Dell 和 Toshiba)上的计算机 BIOS 设置。

内容:

WMI 类Win32_BIOS提供有关计算机 BIOS (UEFI) 的基本信息。您可以使用获取 WmiObjectcmdlet 从 WMI(Windows 管理规范)获取 BIOS 信息。

Get-WmiObject -Class Win32_BIOS

默认情况下,该命令返回有关 BIOS 版本 (SMBIOSBIOSVersion)、制造商、序列号和计算机型号的信息。

在最新版本的 PowerShell Core 7.x 中,您必须使用 CIM 类而不是 WMI 类。在这种情况下,前面的命令应如下所示:

Get-CimInstance -Class Win32_BIOS

查看 BIOS 参数的完整列表Win32_BIOSWMI类,使用命令:

Get-WmiObject -Class Win32_BIOS | Format-List *

您只能查看您感兴趣的 BIOS 设置。例如 BIOS 版本、计算机序列号、制造商和发布日期:

Get-WmiObject -Class Win32_BIOS | Select SMBIOSBIOSVersion, Manufacturer, SerialNumber, ReleaseDate

您还可以从远程计算机获取 BIOS 信息:

Get-WmiObject -Class Win32_BIOS -ComputerName MUN-WKS41

计算机 BIOS 信息存储在 Windows 注册表中。您可以使用 PowerShell 直接从注册表获取 BIOS 信息:

Get-ItemProperty -Path HKLM:HARDWAREDESCRIPTIONSystemBIOS

Win32_BIOS 是一个通用类,可用于获取任何 Windows 设备上的基本 BIOS 信息。但是,一些硬件供应商提供特殊的 WMI 类来直接从 Windows 操作系统访问 BIOS(您需要安装制造商的本机驱动程序)。

如何使用 Get-BIOS 模块获取或更改 BIOS 设置

您可以使用 PSGallery 的一个单独的模块,称为获取BIOS获取 Dell、HP、Lenovo 和 Toshiba 计算机的 BIOS/UEFI 设置。

从 PowerShell 在线库安装模块(PowerShell 模块可以离线安装):

Install-Module GetBIOS

要查看计算机的 BIOS 设置,请运行以下命令:

Get-BIOS

对于某些版本的 BIOS,您不仅可以显示 BIOS 参数的当前值,还可以显示其描述和可能的值:

Get-BIOS -ShowDescription

同一开发商还提供了一个模块,允许您更改 Dell、Lenovo 和 HP 计算机上的 BIOS 设置。

Install-Module SetBIOS

另请阅读:将 BIOS 从 Legacy 更改为 UEFI,无需重新安装 Windows

您需要创建以下格式的 CSV 文件来更改设备的 BIOS 设置:{设置,值}。

要应用包含 BIOS 设置的 CSV 文件,请运行以下命令

Set-BIOS -Path "YourBIOSSettingsFile.csv"

如果 BIOS 受密码保护,请添加-Password到选项。

使用 PowerShell 列出 Lenovo 设备上的 BIOS 设置

当前 BIOS 设置存储在单独的 WMI 类中联想电脑。您可以列出 Lenovo 设备上的可用 BIOS 选项及其值:

Get-WmiObject -class Lenovo_BiosSetting -namespace rootwmi | select-object InstanceName, currentsetting

让我们检查一下您的 Lenovo 计算机上是否设置了 BIOS 密码:

(gwmi -Class Lenovo_BiosPasswordSettings -Namespace rootwmi).PasswordState

如果该命令返回 0,则未设置 BIOS 安全密码。

更改 Lenovo 设备上的 BIOS 管理员密码:

(gwmi -Class Lenovo_SetBiosPassword -Namespace rootwmi).SetBiosPassword("pap,oldPassword,newPassword,ascii,us")

您可以更改 Lenovo 计算机上的某些 BIOS 参数。例如,让我们启用 WOL(局域网唤醒):

$getLenovoBIOS = gwmi -class Lenovo_SetBiosSetting -namespace rootwmi
$getLenovoBIOS.SetBiosSetting("WakeOnLAN,Enable")
$SaveLenovoBIOS = (gwmi -class Lenovo_SaveBiosSettings -namespace rootwmi)
$SaveLenovoBIOS.SaveBiosSettings()

将 Lenovo 设备的 BIOS 设置重置为出厂默认设置:

$DefaultSettings = Get-WmiObject -Namespace rootwmi -Class Lenovo_LoadDefaultSettings
$DefaultSettings.LoadDefaultSettings("CurrentBIOSPassword,ascii,us")

PowerShell:列出和更改 HP 计算机上的 BIOS 设置

您可以列出可用的 BIOS 选项、它们的值以及可用选项惠普计算机/笔记本电脑使用以下命令:

Get-WmiObject -Namespace root/hp/instrumentedBIOS -Class hp_biosEnumeration | select Name, value, possiblevalues –AutoSize

在 HP 计算机上,您可以使用 PowerShell 更改某些 BIOS 设置。例如,您可以禁用从 USB 存储设备启动计算机的功能。

$getHPBios = gwmi -class hp_biossettinginterface -Namespace "roothpinstrumentedbios"
$getHPBios.SetBIOSSetting('USB Storage Boot','Disable')

如果需要密码才能更改 HP 设备上的 BIOS 设置,您可以使用以下脚本:

$HPBIOSPassword = "<utf-16/>"+"Passw0rd!1"
$getHPBios = gwmi -class hp_biossettinginterface -Namespace "roothpinstrumentedbios"
$getHPBios.SetBIOSSetting(‘Network (PXE) Boot','Disable',$HPBIOSPassword)

如果最后一条命令返回“0”,则说明执行成功。您可以使用简单的 PowerShell 处理程序:

$ChangeBIOS_State = $bios.setbiossetting(Network (PXE) Boot', 'Disable' , $HPBIOSPassword)
$ChangeBIOS_State_Code = $ChangeBIOS_State.return
If(($ChangeBIOS_State_Code) -eq 0)
{
write-host "OK"
}
Else
{
write-host "Error - (Return code $ChangeBIOS_State_Code)" -Foreground Red
}

如果要在 HP 笔记本电脑上的 BIOS 中启用 LAN/WLAN 切换,以便在以太网连接可用时自动断开 Wi-Fi,请运行以下命令:

$getHPBios.SetBIOSSetting('LAN/WLAN Switching','Enable')

您还可以安装HP 客户端管理脚本库您的 Hewlett-Packard 设备上的 (CMSL) 扩展(https://www.hp.com/us-en/solutions/client-management-solutions/download.html)。 CMSL 包含多个 PowerShell 模块,可让您获取或更改 BIOS/UEFU 设置、更新固件等。

将当前 BIOS 设置导出到文本文件:

Get-HPBIOSSettingsList | Out-File -FilePath ‘C:ProgramDataHPCMSLLogsCurrentBIOSSettings.txt’

在 HP BIOS 设置中启用 WLAN 自动切换选项:

Set-HPBIOSSettingValue -Name "LAN/WLAN Auto Switching" -Value Enable -Password BiosPass000rd

使用 PowerShell 配置 DELL BIOS 设置

您可以查看和管理 BIOS 设置戴尔计算机使用DCIM-BIOS服务WMI 类或现代根德洛姆奇类(安装 OMCI、Open Manage Client Instrumentation 后可用)。

要在 Dell 计算机上的 BIOS 中查看引导设备顺序,请运行以下命令:

Get-WmiObject -NameSpace rootdellomci Dell_BootDeviceSequence | sort bootorder | select BootDeviceName, BootOrder

例如,您可以在 BIOS 中启用 LAN 唤醒,如下所示:

(Get-WmiObject DCIM-BIOSService -namespace rootdcimsysman).SetBIOSAttributes($null,$null,"Wake-On-LAN","4")

另外,对于Dell电脑,可以使用官方的戴尔BIOS提供商PowerShell 模块,作为驱动程序安装过程的一部分安装,或者您可以使用以下命令手动安装它:

Install-Module -Name DellBIOSProvider -Force

例如,您可以使用此模块获取戴尔计算机上的引导顺序:

Get-Item DellSmbios:BootSequenceBootsequence

检查BIOS密码是否设置:

Get-Item -Path DellSmbios:SecurityIsAdminPasswordSet

更改戴尔设备上的 BIOS 安全密码:

Set-Item -Path DellsmbiosSecurityAdminPassword –Value BadDellPa$$ –Password G00dDe11P@ss

我们了解了如何使用 PowerShell 获取和更改 Windows 设备上的 BIOS 设置。这使您可以统一所有计算机上的 BIOS/UEFI 设置(使用 SCCM、Intune、MDT 等)。