如何使用 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 等)。