Як отримати або змінити налаштування BIOS з PowerShell?

Ви можете використовувати PowerShell для перегляду або зміни налаштувань BIOS на вашому Windows комп'ютері. Розглянемо кілька прикладів, які можна використовувати для отримання або зміни деяких налаштувань BIOS через WMI класи (Windows Management Instrumentation) на комп'ютерах популярних виробників: HP, Lenovo, Dell.

Базові параметри BIOS можна отримати на будь-якому комп'ютері з допомогою командлета Get-WmiObject з класу Win32_BIOS:

Get-WmiObject -Class Win32_BIOS | Format-List *

Дана команда дозволяє отримати версію BIOS (SMBIOSBIOSVersion, BIOSVersion), виробника (Manufacturer), серійний номер комп'ютера (SerialNumber), дату випуску (ReleaseDate) і ряд інших параметрів.

Можна вивести тільки певні параметри BIOS, наприклад, виробника і версію BIOS.

Get-WmiObject -Class Win32_BIOS | Select-Object Manufacturer, SMBIOSBIOSVersion

Ви можете використовувати клас Win32_BIOS для перегляду деякої інформації BIOS на будь-якому комп'ютері з Windows. Однак, деякі виробники обладнання надають спеціальні WMI класи для звернення до BIOS з Windows (необхідно, щоб на комп'ютері були встановлені рідні драйвера від виробника).

Управління BIOS з PowerShell на комп'ютерах Lenovo

Наприклад, на комп'ютерах Lenovo список деяких параметрів BIOS і їх значень можна отримати так:

Get-WmiObject -class Lenovo_BiosSetting -namespace root \ 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 на комп'ютерах 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 з 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 = "" + "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')

Налаштування 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-ChildItem DellSmbios: \ BootSequence \ Bootsequence

Щоб змінити параметр BIOS використовуйте командлет Set-Item. Наприклад, щоб змінити пароль BIOS:

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

За допомогою описаних вище методик ви можете для своїх моделей ПК створити PowerShell скрипт, який експортує поточні настройки BIOS з еталонного комп'ютера (наприклад, в CSV) і застосовує їх на всі інші комп'ютерах такою самою моделлю. Таким чином можна домогтися стандартизації налаштувань BIOS на всіх комп'ютерах в мережі.