Вы можете использовать PowerShell для просмотра или изменения настроек BIOS/UEFI на компьютере Windows. В этой статье мы рассмотрим, как получить или изменить настройки BIOS компьютера через Windows PowerShell на обычном компьютере и на брендовых устройствах популярных производителей (HP, Lenovo, Dell, Toshiba).
Приобрести оригинальные ключи активации Windows 11 или 10 можно у нас в каталоге:
Windows 11 — от 1490 ₽
Windows 10 — от 1110 ₽
Базовая информация о BIOS (UEFI) компьютера доступна в WMI классе Win32_BIOS. Вы можете вывести всю доступную информацию о BIOS с помощью командлета Get-WmiObject.
Get-WmiObject -Class Win32_BIOS
По умолчанию команда возвращает информацию о версии BIOS (SMBIOSBIOSVersion + Manufacturer), серийный номер и модель компьютера (SerialNumber, Version).
В современных версиях PowerShell Core 7.x вместо WMI классов нужно использовать CIM классы:
Get-CimInstance -Class Win32_BIOS
Полный список параметров BIOS, который доступен в WMI классе Win32_BIOS, можно вывести командой:
Get-WmiObject -Class Win32_BIOS | Format-List *
Чтобы вывести конкретные настройки, например, версию BIOS, серийный номер компьютера, производителя и дату выпуска:
Get-WmiObject -Class Win32_BIOS | Select SMBIOSBIOSVersion, Manufacturer, SerialNumber, ReleaseDate
Для получения информации о BIOS на удаленном компьютере:
Get-WmiObject -Class Win32_BIOS -ComputerName MSK-WKS2210
Информация о BIOS также хранится в реестре Windows. Вы можете получить её с помощью PowerShell:
Get-ItemProperty -Path HKLM:\HARDWARE\DESCRIPTION\System\BIOS
Класс Win32_BIOS универсален и может быть использован для получения базовой информации о BIOS на любом устройстве Windows. Однако, некоторые производители оборудования предоставляют специальные WMI классы для обращения к BIOS из Windows (необходимо, чтобы на компьютере были установлены родные драйвера от производителя).
Для брендовых компьютеров Dell, HP, Lenovo, Toshiba можно использовать модуль из PSGallery, который называется Get-BIOS.
Установите модуль:
Install-Module GetBIOS
Чтобы вывести настройки BIOS вашего компьютера, выполните команду:
Get-BIOS
На компьютерах Dell можно вывести описание настроек BIOS с помощью параметра:
Get-BIOS -ShowDescription
Для изменения настроек BIOS на устройствах этих производителей используйте модуль SetBIOS:
Install-Module SetBIOS
Для изменения настроек BIOS вашего устройства, нужно сформировать CSV файл в формате {Setting, Value}.
Чтобы применить настройки из CSV файла:
Set-BIOS -Path "YourPath.csv"
Если BIOS защищён паролем, добавьте параметр -Password.
На компьютерах Lenovo текущие настройки BIOS хранятся в отдельном WMI классе. Вывести список параметров BIOS и их значения можно так:
Get-WmiObject -class Lenovo_BiosSetting -namespace root\wmi | select-object InstanceName, currentsetting
Проверить, установлен ли пароль BIOS:
(gwmi -Class Lenovo_BiosPasswordSettings -Namespace root\wmi).PasswordState
Если пароль для входа в BIOS не установлен, команда вернёт 0.
Для изменения настроек BIOS на устройствах Lenovo, например, включения WOL:
$getLenovoBIOS = gwmi -class Lenovo_SetBiosSetting -namespace root\wmi
$getLenovoBIOS.SetBiosSetting("WakeOnLAN,Enable")
$SaveLenovoBIOS = (gwmi -class Lenovo_SaveBiosSettings -namespace root\wmi)
$SaveLenovoBIOS.SaveBiosSettings()
Сбросить настройки BIOS на заводские:
$DefaultSettings = Get-WmiObject -Namespace root\wmi -Class Lenovo_LoadDefaultSettings
$DefaultSettings.LoadDefaultSettings("CurrentBIOSPassword,ascii,us")
На компьютерах HP можно использовать следующую команду для получения параметров BIOS:
Get-WmiObject -Namespace root/hp/instrumentedBIOS -Class hp_biosEnumeration | select Name, value, possiblevalues –AutoSize
Для изменения настроек BIOS, например, отключения загрузки ПК с USB:
$getHPBios = gwmi -class hp_biossettinginterface -Namespace "root\hp\instrumentedbios"
$getHPBios.SetBIOSSetting('USB Storage Boot','Disable')
Для изменения настроек BIOS, защищённых паролем:
$HPBIOSPassword = "
"+"P@$$w0rd"
$getHPBios = gwmi -class hp_biossettinginterface -Namespace "root\hp\instrumentedbios"
$getHPBios.SetBIOSSetting('Network (PXE) Boot','Disable',$HPBIOSPassword)
Если команда вернула Return 0, значит она выполнена успешно. Также можно включить в BIOS LAN/WLAN Switching:
$getHPBios.SetBIOSSetting('LAN/WLAN Switching','Enable')
Экспорт настроек BIOS в текстовый файл:
Get-HPBIOSSettingsList | Out-File -FilePath ‘C:\ProgramData\HP\CMSL\Logs\CurrentBIOSSettings.txt’
Для более расширенного управления HP BIOS можно использовать HP Client Management Script Library (CMSL).
На компьютерах DELL можно использовать WMI класс DCIM-BIOSService или класс root\dellomci для управления BIOS. Чтобы вывести порядок использования загрузочных устройств:
Get-WmiObject -NameSpace root\dellomci Dell_BootDeviceSequence | sort bootorder | select BootDeviceName, BootOrder
Для включения Wake on LAN:
(Get-WmiObject DCIM-BIOSService -namespace rootdcimsysman).SetBIOSAttributes($null,$null,"Wake-On-LAN","4")
Также можно установить модуль DellBIOSProvider:
Install-Module -Name DellBIOSProvider -Force
Чтобы получить порядок загрузки на компьютере Dell:
Get-Item DellSmbios:\BootSequence\Bootsequence
Чтобы проверить, задан ли пароль BIOS:
Get-Item -Path DellSmbios:\Security\IsAdminPasswordSet
Для изменения пароля BIOS:
Set-Item -Path Dellsmbios\Security\AdminPassword –Value 0ldDellP@ss –Password Newde11P@ss
Мы рассмотрели, как получить и изменить настройки BIOS на устройствах Windows с помощью PowerShell. Это позволяет стандартизировать настройки BIOS/UEFI на всех компьютерах в вашей сети.