Вы можете использовать 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
По умолчанию команда возвращает информацию о версии BIOS (SMBIOSBIOSVersion + Manufacturer), серийный номер и модель компьютера (SerialNumber, Version).
Get-CimInstance -Class Win32_BIOS
Полный список параметров BIOS, который доступен в WMI классе Win32_BIOS можно вывести командой:
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 MSK-WKS2210
Get-ItemProperty -Path HKLM:\HARDWARE\DESCRIPTION\System\BIOS
Класс Win32_BIOS является универсальным и может быть использован для получения базовой информации о BIOS на любом устройстве Windows.
Однако, некоторые производители оборудования предоставляют специальные WMI классы для обращения к BIOS из Windows (необходимо, чтобы на компьютере были установлены родные драйвера от производителя).
Получить и изменить настройки BIOS с помощью модуля Get-BIOS
Для получения настроек BIOS/UEFI брендовые компьютеров Dell, HP, Lenovo, Toshiba можно использовать отдельный модуль из PSGallery, который называется Get-BIOS.
Установите модуль из онлайн галереии PowerShell (также вы можете установить PowerShell модуль офлайн):
Install-Module GetBIOS
Чтобы вывести настройки BIOS вашего компьютера, выполните команду:
Get-BIOS
На компьютерах Dell можно вывести описание настроек BIOS с помощью параметра:
Get-BIOS -ShowDescription
Также от этого же разработчика есть модуль, который позволяет изменить настройки BIOS на устройствах Dell/Lenovo/HP.
Install-Module SetBIOS
Для изменения настроек BIOS вашего устройства, нужно сформировать CSV файл в формате {Setting, Value}.
Чтобы применить CSV файл с натсройками BIOS, выполните команду:
Set-BIOS -Path "YourPath.csv"
Управление BIOS из PowerShell на компьютерах Lenovo
На компьютерах Lenovo текущие настройки BIOS хранятся в оттельном WMI классе. Вы можете вывести список параметров BIOS и их текущие значения так:
Get-WmiObject -class Lenovo_BiosSetting -namespace root\wmi | select-object InstanceName, currentsetting
Проверим, что на компьютере Lenovo установлен пароль для входа в BIOS:
(gwmi -Class Lenovo_BiosPasswordSettings -Namespace root\wmi).PasswordState
Если команда вернула 0, значит пароль для входа в BIOS не установлен.
Изменить пароль BIOS на устройстве:
(gwmi -Class Lenovo_SetBiosPassword -Namespace root\wmi).SetBiosPassword("pap,oldPassword,newPassword,ascii,us")
Вы можете изменить некоторые параметры 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 устройства Lenovo на заводские:
$DefaultSettings = Get-WmiObject -Namespace root\wmi -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 "root\hp\instrumentedbios"
$getHPBios.SetBIOSSetting('USB Storage Boot','Disable')
Если для изменения настроек BIOS требуется указать пароль, вы можете использовать следующий скрипт:
$HPBIOSPassword = "<utf-16/>"+"P@$$w0rd"
$getHPBios = gwmi -class hp_biossettinginterface -Namespace "root\hp\instrumentedbios"
$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:\ProgramData\HP\CMSL\Logs\CurrentBIOSSettings.txt’
Включить WLAN Auto Switch:
Set-HPBIOSSettingValue -Name "LAN/WLAN Auto Switching" -Value Enable -Password BiosPass000rd
Настройка BIOS на устройствах DELL из PowerShell
На компьютерах DELL для просмотра и управления параметрами BIOS вы можете использовать WMI класс DCIM-BIOSService или более новый класс root\dellomci (доступен после установки пакета OMCI — Open Manage Client Instrumentation).
Чтобы вывести порядок использования загрузочных устройств в BIOS на компьютерах Dell, выполните:
Get-WmiObject -NameSpace root\dellomci Dell_BootDeviceSequence | sort bootorder | select BootDeviceName, BootOrder
Например, вы можете включить 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:\BootSequence\Bootsequence
Проверить, задан ли пароль BIOS:
Get-Item -Path DellSmbios:\Security\IsAdminPasswordSet
Изменить пароль BIOS на устройстве Dell:
Set-Item -Path Dellsmbios\Security\AdminPassword –Value 0ldDellP@ss –Password Newde11P@ss
Мы рассмотрели, как получить и изменить настройки BIOS на устройствах Windows с помощью PowerShell. Это позволит вам стандартизировать настройки BIOS/UEFI на всех компьютерах в вашей сети (с помощью SCCM, Intune, MDT, и т.д.