Как получить или изменить настройки BIOS/UEFI из PowerShell?

Вы можете использовать PowerShell для просмотра или изменения настроек BIOS/UEFI на компьютере Windows. В этой статье мы рассмотрим, как получить или изменить настройки BIOS компьютера через Windows PowerShell на обычном компьютере и на брендовых устройствах популярных производителей (HP, Lenovo, Dell, Toshiba).

Получаем информацию из BIOS/UEFI с помощью PowerShell

Базовая информация о BIOS (UEFI) компьютера доступна в WMI классе Win32_BIOS. Вы можете вывести всю доступную информацию о BIOS с помощью командлета Get-WmiObject.

Get-WmiObject -Class Win32_BIOS

Get-WmiObject Win32_BIOS вывести версию 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 *

Get-WmiObject -Class Win32_BIOS

Можно вывести только интересующие вас настройки BIOS. Например, версию BIOS, серийный номер компьютера, производителя и дату выпуска:

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

Можно получить информацию BIOS удаленного компьютера:

Get-WmiObject -Class Win32_BIOS -ComputerName MSK-WKS2210

Информация о BIOS компьютера хранится в реестре Windows. Вы можете получить нужную информацию BIOS напрямую из реестра с помощью PowerShell :

Get-ItemProperty -Path HKLM:HARDWAREDESCRIPTIONSystemBIOS

nayti-parametry bios/uefi хранятся в реестре

Класс Win32_BIOS является универсальным и может быть использован для получения базовой информации о BIOS на любом устройстве Windows.

Однако, некоторые производители оборудования предоставляют специальные WMI классы для обращения к BIOS из Windows (необходимо, чтобы на компьютере были установлены родные драйвера от производителя).

Получить и изменить настройки BIOS с помощью модуля Get-BIOS

Для получения настроек BIOS/UEFI брендовые компьютеров Dell, HP, Lenovo, Toshiba можно использовать отдельный модуль из PSGallery, который называется Get-BIOS.

Установите модуль из онлайн галереии PowerShell (также вы можете установить PowerShell модуль офлайн ):

Install-Module GetBIOS

powershell установить модуль getBIOS

Чтобы вывести настройки BIOS вашего компьютера, выполните команду:

Get-BIOS

get-bios вывести настройки BIOS с помощью PowerShell

На компьютерах Dell можно вывести описание настроек BIOS с помощью параметра:

Get-BIOS -ShowDescription

Также от этого же разработчика есть модуль, который позволяет изменить настройки BIOS на устройствах Dell/Lenovo/HP.

Install-Module SetBIOS

Для изменения настроек BIOS вашего устройства, нужно сформировать CSV файл в формате {Setting, Value}.

poweshell: изменить параметры bios из windows

Чтобы применить CSV файл с натсройками BIOS, выполните команду:

Set-BIOS -Path "YourPath.csv"

Если BIOS защищен паролем, добавьте в параметр -Password.

Управление BIOS из PowerShell на компьютерах Lenovo

На компьютерах Lenovo текущие настройки BIOS хранятся в оттельном WMI классе. Вы можете вывести список параметров BIOS и их текущие значения так:

Get-WmiObject -class Lenovo_BiosSetting -namespace rootwmi | select-object InstanceName, currentsetting

Получить настройки BIOS на компьютере Lenovo из Powershell

Проверим, что на компьютере Lenovo установлен пароль для входа в BIOS:

(gwmi -Class Lenovo_BiosPasswordSettings -Namespace rootwmi).PasswordState

Если команда вернула 0, значит пароль для входа в BIOS не установлен.

проверить наличие пароля BIOS Lenovo_BiosPasswordSettings -> PasswordState

Изменить пароль BIOS на устройстве:

(gwmi -Class Lenovo_SetBiosPassword -Namespace rootwmi).SetBiosPassword("pap,oldPassword,newPassword,ascii,us")

Вы можете изменить некоторые параметры BIOS на компьютерах Lenovo. Например, включим на компьютере WOL:

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

Сбросить настройки BIOS устройства Lenovo на заводские:

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

Доступ к настройкам BIOS из PowerShell на компьютерах Hewlett-Packard

На компьютерах/ноутбуках от HP можно использовать следующую команду для получения параметров BIOS, их значений и доступных опций:

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

Вы можете изменить некоторые настройки BIOS на компьютерах HP из PowerShell. Например, отключить загрузку компьютера с USB устройств.

$getHPBios = gwmi -class hp_biossettinginterface -Namespace "roothpinstrumentedbios"
$getHPBios.SetBIOSSetting('USB Storage Boot','Disable')

Если для изменения настроек BIOS требуется указать пароль, вы можете использовать следующий скрипт:

$HPBIOSPassword = "<utf-16/>"+"P@$$w0rd"
$getHPBios = gwmi -class hp_biossettinginterface -Namespace "roothpinstrumentedbios"
$getHPBios.SetBIOSSetting(‘Network (PXE) Boot','Disable',$HPBIOSPassword)

Если последняя команда вернула “Return 0”, значит она отработала успешно. Можно сделать простейший обработчик:

$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
}

Если вы хотите включить в BIOS LAN/WLAN Switching на ноутбуке HP для автоматического отключения от Wi-FI при наличии Ethernet подключения , выполните команду:

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

Кроме того, вы можете установить на устройство Hewlet Packard расширение HP Client Management Script Library , 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’

Включить WLAN Auto Switch:

Set-HPBIOSSettingValue -Name "LAN/WLAN Auto Switching" -Value Enable -Password BiosPass000rd

Настройка BIOS на устройствах DELL из PowerShell

На компьютерах DELL для просмотра и управления параметрами BIOS вы можете использовать WMI класс DCIM-BIOSService или более новый класс rootdellomci (доступен после установки пакета OMCI — Open Manage Client Instrumentation).

Чтобы вывести порядок использования загрузочных устройств в BIOS на компьютерах Dell, выполните:

Get-WmiObject -NameSpace rootdellomci Dell_BootDeviceSequence | sort bootorder | select BootDeviceName, BootOrder

класс dellomci для получения параметров bios на компьютерах DELL

Например, вы можете включить Wake on LAN в BIOS следующим образом:

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

Кроме того, для компьютеров Dell можно использовать официальный PowerShell модуль DellBIOSProvider , который устанавливается при установке драйверов либо вы можете установить его вручную командой:

Install-Module -Name DellBIOSProvider -Force

С помощью этого модуля вы можете получить порядок загрузки на компьютере Dell:

Get-Item DellSmbios:BootSequenceBootsequence

Проверить, задан ли пароль BIOS:

Get-Item -Path DellSmbios:SecurityIsAdminPasswordSet

Изменить пароль BIOS на устройстве Dell:

Set-Item -Path DellsmbiosSecurityAdminPassword –Value 0ldDellP@ss –Password Newde11P@ss

Мы рассмотрели, как получить и изменить настройки BIOS на устройствах Windows с помощью PowerShell. Это позволит вам стандартизировать настройки BIOS/UEFI на всех компьютерах в вашей сети (с помощью SCCM, Intune, MDT, и т.д.

EnglishRussianUkrainian