Blog

You can use PowerShell to view or change BIOS/UEFI settings on a Windows computer. This article covers how to retrieve or modify BIOS settings via Windows PowerShell on standard computers and branded devices from popular manufacturers (HP, Lenovo, Dell, Toshiba).

You can purchase original Windows 11 or 10 activation keys from our catalog:

Windows 11 – from 11.20 €

Windows 10 – from 9.16 €

Retrieving BIOS/UEFI Information with PowerShell

Basic BIOS (UEFI) information is available in the Win32_BIOS WMI class. You can retrieve all available BIOS information using the Get-WmiObject cmdlet:

Get-WmiObject -Class Win32_BIOS

By default, this command returns information about the BIOS version (SMBIOSBIOSVersion + Manufacturer), serial number, and computer model (SerialNumber, Version).

In modern versions of PowerShell Core 7.x, use CIM classes instead of WMI classes:

Get-CimInstance -Class Win32_BIOS

To display the full list of BIOS parameters available in the Win32_BIOS WMI class:

Get-WmiObject -Class Win32_BIOS | Format-List *

To retrieve specific settings, such as BIOS version, serial number, manufacturer, and release date:

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

To retrieve BIOS information from a remote computer:

Get-WmiObject -Class Win32_BIOS -ComputerName MSK-WKS2210

BIOS information is also stored in the Windows registry. You can retrieve it using PowerShell:

Get-ItemProperty -Path HKLM:\HARDWARE\DESCRIPTION\System\BIOS

The Win32_BIOS class is universal and can be used to retrieve basic BIOS information on any Windows device. However, some hardware manufacturers provide specialized WMI classes for accessing BIOS settings from Windows (requires native manufacturer drivers to be installed).

Retrieving and Modifying BIOS Settings with the Get-BIOS Module

For branded computers from Dell, HP, Lenovo, and Toshiba, you can use the Get-BIOS module from PSGallery.

Install the module:

Install-Module GetBIOS

To display your computer’s BIOS settings:

Get-BIOS

On Dell computers, you can display BIOS setting descriptions using:

Get-BIOS -ShowDescription

To modify BIOS settings on devices from these manufacturers, use the SetBIOS module:

Install-Module SetBIOS

To modify BIOS settings, create a CSV file in the format {Setting, Value}.

To apply settings from the CSV file:

Set-BIOS -Path "YourPath.csv"

If the BIOS is password-protected, add the -Password parameter.

Managing BIOS on Lenovo Computers with PowerShell

On Lenovo computers, BIOS settings are stored in a dedicated WMI class. To list BIOS parameters and their values:

Get-WmiObject -class Lenovo_BiosSetting -namespace root\wmi | select-object InstanceName, currentsetting

To check if a BIOS password is set:

(gwmi -Class Lenovo_BiosPasswordSettings -Namespace root\wmi).PasswordState

If no BIOS password is set, the command returns 0.

To modify BIOS settings on Lenovo devices, for example, to enable WOL:

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

To reset BIOS settings to factory defaults:

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

Accessing BIOS Settings on Hewlett-Packard Computers with PowerShell

On HP computers, you can retrieve BIOS parameters using:

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

To modify BIOS settings, for example, to disable booting from USB:

$getHPBios = gwmi -class hp_biossettinginterface -Namespace "root\hp\instrumentedbios"
$getHPBios.SetBIOSSetting('USB Storage Boot','Disable')

To modify password-protected BIOS settings:

$HPBIOSPassword = ""+"P@$$w0rd"
$getHPBios = gwmi -class hp_biossettinginterface -Namespace "root\hp\instrumentedbios"
$getHPBios.SetBIOSSetting('Network (PXE) Boot','Disable',$HPBIOSPassword)

If the command returns Return 0, it was executed successfully. You can also enable LAN/WLAN Switching in BIOS:

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

To export BIOS settings to a text file:

Get-HPBIOSSettingsList | Out-File -FilePath ‘C:\ProgramData\HP\CMSL\Logs\CurrentBIOSSettings.txt’

For advanced HP BIOS management, use the HP Client Management Script Library (CMSL).

Managing BIOS on Dell Computers with PowerShell

On Dell computers, you can use the DCIM-BIOSService or root\dellomci WMI classes to manage BIOS settings. To display the boot device sequence:

Get-WmiObject -NameSpace root\dellomci Dell_BootDeviceSequence | sort bootorder | select BootDeviceName, BootOrder

To enable Wake on LAN:

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

You can also install the DellBIOSProvider module:

Install-Module -Name DellBIOSProvider -Force

To retrieve the boot order on a Dell computer:

Get-Item DellSmbios:\BootSequence\Bootsequence

To check if a BIOS password is set:

Get-Item -Path DellSmbios:\Security\IsAdminPasswordSet

To change the BIOS password:

Set-Item -Path Dellsmbios\Security\AdminPassword –Value 0ldDellP@ss –Password Newde11P@ss

Conclusion

We explored how to retrieve and modify BIOS settings on Windows devices using PowerShell. This approach allows you to standardize BIOS/UEFI settings across all computers in your network.

banner for Windows
Buy Windows от product key from
8.00 € Find Out More
Subscribe
Notify of
guest
0 comments
Inline Feedbacks
View all comments