如何使用 PowerShell 查看和更改 BIOS (UEFI) 设置
您可以使用 PowerShell 查看或更改 Windows 计算机上的 BIOS/UEFI 设置。在本文中,我们将了解如何使用 Windows PowerShell 获取或更改普通计算机和流行品牌设备(HP、Lenovo、Dell 和 Toshiba)上的计算机 BIOS 设置。
内容:
- 使用 PowerShell 检查 BIOS/UEFI 版本
- 如何使用 Get-BIOS 模块获取或更改 BIOS 设置
- 使用 PowerShell 列出 Lenovo 设备上的 BIOS 设置
- PowerShell:列出和更改 HP 计算机上的 BIOS 设置
- 使用 PowerShell 配置 DELL 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 等)。
