Hoe u BIOS (UEFI)-instellingen kunt openen en wijzigen met PowerShell

Hé, als je ooit vanuit Windows in de BIOS wilde kijken zonder opnieuw op te starten naar het setup-scherm, dan kan PowerShell dat een stuk makkelijker maken. Het is weliswaar geen volwaardige BIOS-editor – althans niet direct – maar je kunt er wel wat informatie mee opvragen en zelfs een paar instellingen aanpassen, vooral op beheerde hardware in een bedrijfsomgeving. Het is misschien wat vreemd, maar op Windows-pc’s openen WMI (Windows Management Instrumentation) en bepaalde modules een klein venster met BIOS-details of laten ze je in sommige gevallen zelfs aanpassingen maken. Houd er wel rekening mee dat niet elk apparaat perfect zal meewerken – soms zijn leverancierspecifieke klassen of stuurprogramma’s nodig en is het op afstand wijzigen van de BIOS niet altijd even eenvoudig. Toch is het een handige manier om processen te automatiseren of problemen op te lossen op gewone computers, of zelfs om BIOS-configuraties te automatiseren voor een hele vloot.

Als je deze commando’s onder de knie hebt, wordt je leven een stuk makkelijker, vooral als je de BIOS-versie wilt controleren of updates wilt uitvoeren zonder telkens in de menu’s te hoeven duiken. Hieronder volgen enkele concrete stappen om de BIOS-informatie te achterhalen of indien nodig aanpassingen te maken.

Hoe je BIOS-informatie kunt uitlezen en instellingen kunt wijzigen met PowerShell

Controleer de BIOS/UEFI-versie met PowerShell.

Dit is het meest basale startpunt. De Win32_BIOS -klasse via WMI geeft je inzicht in de BIOS-versie, fabrikant, serienummer, enzovoort. Handig voor het controleren of bevestigen van updates. In de meeste gevallen volstaat het om het volgende commando uit te voeren:

Get-WmiObject -Class Win32_BIOS

Nieuwere PowerShell-versies (zoals PowerShell Core 7.x) geven echter de voorkeur aan Get-CimInstance, dus wellicht wilt u het volgende:

Get-CimInstance -ClassName Win32_BIOS

Om alle informatie te zien, niet alleen de basisgegevens, kunt u de uitvoer door Format-List * leiden. Bijvoorbeeld:

Get-WmiObject -Class Win32_BIOS | Format-List *

Dit geeft alle gegevens weer, inclusief SMBIOS-versie, serienummer, releasedatum, enz. Handig om te controleren of een BIOS-update daadwerkelijk is gelukt of om te bevestigen welke versie actief is. Soms is de informatie die je krijgt voldoende om compatibiliteitsproblemen op te lossen of gewoon een logboek bij te houden.

Als je snel een selectie wilt maken op basis van bijvoorbeeld versie en fabrikant, doe dan het volgende:

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

En als u op afstand controleert — bijvoorbeeld omdat u een aantal pc’s beheert —:

Get-WmiObject -Class Win32_BIOS -ComputerName ComputerName

Vervang ComputerName door de netwerkhostnaam of het IP-adres. Eenvoudig te scripten op meerdere machines.

Omdat Windows het natuurlijk onnodig ingewikkeld moet maken, kun je BIOS-informatie ook rechtstreeks uit het register halen:

Get-ItemProperty -Path HKLM:\HARDWARE\DESCRIPTION\System\BIOS

Dit is een meer technisch proces, maar soms is het sneller als WMI niet meewerkt.

De Get-BIOS PowerShell-module gebruiken voor meer controle

Als je liever zelf aan de slag gaat, is er dit handige programmaatje uit de PowerShell Gallery genaamd Get-BIOS. Het is met name geschikt voor het beheren van de BIOS op zakelijke apparatuur van Dell, HP, Lenovo en Toshiba.

Om het te installeren (ervan uitgaande dat u netwerktoegang hebt):

Install-Module GetBIOS

Na de installatie kunt u de BIOS-instellingen overzichtelijk bekijken met:

Get-BIOS

Dit toont de huidige waarden, maar ook beschrijvingen en mogelijke opties als je -ShowDescription toevoegt.

En om BIOS-instellingen te wijzigen, kan een andere module genaamd SetBIOS van pas komen. Je moet hiervoor een CSV-bestand voorbereiden, bijvoorbeeld:

Instelling, Waarde "USB-opstartenUitschakelen" "Wake-On-LAN"Inschakelen 

Voer vervolgens het volgende commando uit:

Set-BIOS -Path "C:\Path\To\Your\File.csv"

Op sommige machines, met name laptops met een BIOS-wachtwoord, moet u het wachtwoord opgeven met de parameter -Password. Anders kunnen wijzigingen mislukken of handmatige stappen vereisen.

Het BIOS beheren op Lenovo-computers

Lenovo heeft zijn eigen WMI-klassen voor meer gedetailleerde controle. Bijvoorbeeld om de huidige BIOS-instellingen te bekijken:

Get-WmiObject -class Lenovo_BiosSetting -namespace root\wmi | select-object InstanceName, currentsetting

Stel dat u wilt controleren of er een BIOS-wachtwoord is ingesteld (want beveiliging is natuurlijk belangrijk):

(gwmi -Class Lenovo_BiosPasswordSettings -Namespace root\wmi).PasswordState

Als het 0 retourneert, is er geen wachtwoord; anders moet u er mogelijk eerst een instellen. Het beheerderswachtwoord kan worden gewijzigd via:

(gwmi -Class Lenovo_SetBiosPassword -Namespace root\wmi).SetBiosPassword("oldPassword, newPassword")

Het inschakelen van WOL of het terugzetten van de standaardinstellingen kan ook via een script worden geregeld:

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

Het terugzetten naar de standaardinstellingen houdt het volgende in:

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

HP BIOS-instellingen hacken via PowerShell

Als je met HP-apparatuur werkt, kun je de opties als volgt weergeven:

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

Wil je opstarten via USB uitschakelen? Hier is een voorbeeld van een commando:

$getHPBios = gwmi -class hp_biossettinginterface -Namespace "root\hp\instrumentedbios" $getHPBios. SetBIOSSetting('USB Storage Boot', 'Disable')

Als het BIOS met een wachtwoord is beveiligd, moet u dit als volgt opgeven:

$HPBIOSPassword = "<utf-16/>"+"Passw0rd!1" $getHPBios. SetBIOSSetting('Netwerk (PXE) opstarten', 'Uitschakelen', $HPBIOSPassword) 

Het script retourneert een code — 0 betekent succes, alles daarbuiten? Niet echt. Je kunt de uitvoer verwerken met:

$ChangeBIOS_State = $bios.setbiossetting('Network (PXE) Boot', 'Disable', $HPBIOSPassword) if (($ChangeBIOS_State.return) -eq 0) { write-host "OK" } else { write-host "Error - (Return code $($ChangeBIOS_State.return))" -Foreground Red }

Wil je automatisch schakelen tussen LAN en WLAN inschakelen? Hetzelfde principe:

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

Sommige tools, zoals de HP Client Management Script Library, breiden deze mogelijkheden uit door het exporteren en importeren van BIOS-instellingen of firmware-updates in batches mogelijk te maken. Overweeg om eerst de huidige instellingen te exporteren:

Get-HPBIOSSettingsList | Out-File 'C:\CurrentBIOSSettings.txt'

Voor Dell Itty-Bitten Tweaks

Dell heeft ook eigen WMI-klassen. Om de opstartvolgorde te bekijken, voert u het volgende commando uit:

Get-WmiObject -Namespace root\dellomci Dell_BootDeviceSequence | sort BootOrder | select BootDeviceName, BootOrder

Wake-on-LAN in- of uitschakelen:

(Get-WmiObject DCIM-BIOSService -namespace root\dcim\sysman).SetBiosAttributes($null, $null, "Wake-On-LAN", "4")

En als je echt de diepte in wilt gaan, installeer dan de DellBIOSProvider-module:

Install-Module -Name DellBIOSProvider -Force

Na de installatie kun je BIOS-instellingen vinden/aanpassen met commando’s zoals:

Get-Item DellSmbios:\BootSequence\Bootsequence

Of controleer of het beheerderswachtwoord is ingesteld:

Get-Item -Path DellSmbios:\Security\IsAdminPasswordSet

Ja, al deze tools zijn een beetje rommelig, en leverancierspecifieke klassen werken soms alleen als de juiste stuurprogramma’s zijn geïnstalleerd. Toch kan PowerShell een handig hulpmiddel zijn voor snelle controles of het automatiseren van bepaalde instellingen. Verwacht alleen niet dat je de BIOS vanaf je bank kunt herprogrammeren zonder risico’s te nemen…

Samenvatting

  • Gebruik Get-WmiObjectof Get-CimInstanceom op een eenvoudige manier basisinformatie over het BIOS op te vragen.
  • Installeer speciale modules zoals Get-BIOS en SetBIOS voor meer gedetailleerde controle.
  • Voor volledige controle zijn leverancierspecifieke WMI-klassen nodig, met name op Lenovo-, HP- of Dell-machines.
  • Controleer altijd alles zorgvuldig voordat u BIOS-instellingen op afstand wijzigt en maak indien mogelijk een back-up van de huidige configuratie.

Samenvatting

PowerShell is geen volwaardige BIOS-editor, maar het is verrassend hoeveel informatie en kleine aanpassingen je vanuit het besturingssysteem kunt verkrijgen. Houd er wel rekening mee dat het vooral bedoeld is voor informatie of lichte configuratie, niet voor diepgaande BIOS-hacking. Toch zijn deze commando’s een goed begin als je setups wilt automatiseren of problemen wilt oplossen vanuit Windows. Hopelijk helpt dit om een ​​aantal van die routinematige BIOS-taken te stroomlijnen – in ieder geval genoeg om een ​​paar uur te besparen of herstarts te voorkomen.