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.