คุณสามารถใช้ PowerShell เพื่อดูหรือเปลี่ยนการตั้งค่า BIOS บนคอมพิวเตอร์ที่รัน Windows มาดูตัวอย่างบางอย่างที่คุณสามารถใช้เพื่อรับหรือแก้ไขการตั้งค่า BIOS บางอย่างด้วย PowerShell ผ่านคลาส WMI (Windows Management Instrumentation) บนคอมพิวเตอร์ของผู้ผลิตยอดนิยม: HP, Lenovo, Dell
คุณสามารถดูพารามิเตอร์ BIOS พื้นฐานบนคอมพิวเตอร์ของคุณได้โดยใช้คำสั่ง Get-WmiObject จากคลาส Win32_BIOS:
Get-WmiObject -Class Win32_BIOS | Format-List *
คำสั่งนี้ช่วยให้คุณดูเวอร์ชัน BIOS (SMBIOSBIOSVersion, BIOSVersion), ผู้ผลิตฮาร์ดแวร์, หมายเลขซีเรียลคอมพิวเตอร์, ReleaseDate และข้อมูลอื่นๆ

คุณสามารถแสดงรายการพารามิเตอร์ BIOS บางส่วนเท่านั้นได้:
Get-WmiObject -Class Win32_BIOS | Select-Object Manufacturer, SMBIOSBIOSVersion
คุณสามารถใช้คลาส Win32_BIOS เพื่อดูข้อมูล BIOS บางอย่างบนคอมพิวเตอร์ใดๆ ที่รัน Windows อย่างไรก็ตาม ผู้ผลิตฮาร์ดแวร์บางรายมีคลาส WMI 特別เพื่อเข้าถึง BIOS จาก Windows OS โดยตรง (ไดรเวอร์เนทีฟของผู้ผลิตฮาร์ดแวร์ของคุณต้องติดตั้งบนคอมพิวเตอร์)
การจัดการการตั้งค่า BIOS ของ Lenovo จาก PowerShell
คุณสามารถรับรายการพารามิเตอร์ BIOS และค่าของพวกมันบนคอมพิวเตอร์ Lenovo ได้ดังนี้:
Get-WmiObject -class Lenovo_BiosSetting -namespace root\wmi
เพื่อแสดงชื่อการตั้งค่า BIOS และค่าปัจจุบันของพวกมันเท่านั้น:
Get-WmiObject -class Lenovo_BiosSetting -namespace root\wmi | select-object InstanceName, currentsetting

ลองตรวจสอบว่ารหัสผ่านเพื่อเข้าถึง BIOS ถูกตั้งค่าบนคอมพิวเตอร์ Lenovo ของคุณหรือไม่:
(gwmi -Class Lenovo_BiosPasswordSettings -Namespace root\wmi).PasswordState
หากคำสั่งคืนค่า 0 แสดงว่ารหัสผ่านเพื่อเข้า BIOS ไม่ได้ถูกตั้งค่า

คุณสามารถเปลี่ยนพารามิเตอร์ BIOS บางอย่างบนคอมพิวเตอร์ Lenovo ได้ ตัวอย่างเช่น ให้เปิดใช้งาน WOL (Wake-On-LAN):
$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
เพื่อรับการตั้งค่า BIOS, ค่าของพวกมัน และตัวเลือกที่มีอยู่บนคอมพิวเตอร์ HP คุณสามารถใช้คำสั่งต่อไปนี้:
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/>"+"Passw0rd!1"
$getHPBios = gwmi -class hp_biossettinginterface -Namespace "root\hp\instrumentedbios"
$getHPBios.SetBIOSSetting('Network (PXE) Boot','Disable',$HPBIOSPassword)
หากคำสั่งสุดท้ายคืนค่า "0" แสดงว่าทำงานสำเร็จ คุณสามารถใช้ตัวจัดการ PowerShell 簡單ได้:
$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
}
หากคุณต้องการเปิดใช้งาน LAN/WLAN Switching ใน BIOS บนแล็ปท็อป HP เพื่อตัดการเชื่อมต่อ Wi-Fi อัตโนมัติเมื่อมีการเชื่อมต่อ Ethernet ให้รันคำสั่งนี้:
$getHPBios.SetBIOSSetting('LAN/WLAN Switching','Enable')
กำหนดค่าการตั้งค่า BIOS ของ DELL ด้วย PowerShell
เพื่อดูและจัดการการตั้งค่า BIOS บนคอมพิวเตอร์ DELL คุณสามารถใช้คลาส 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 BadDellPa$$ –Password G00dDe11P@ss
ด้วยวิธีที่อธิบายไว้ข้างต้น คุณสามารถสร้างสคริปต์ PowerShell เพื่อส่งออกการตั้งค่า BIOS ปัจจุบันจากคอมพิวเตอร์อ้างอิง (เช่น ไปยังไฟล์ CSV) จากนั้นคุณสามารถใช้ PowerShell เพื่อปรับใช้การตั้งค่า BIOS เดียวกันบนคอมพิวเตอร์ทั้งหมดในบริษัทของคุณได้