How to Get BIOS Information Using PowerShell

If you’ve ever needed to check your computer’s BIOS version, manufacturer, or other firmware details, you know it usually means rebooting your computer and pressing a special key during startup. That’s annoying, especially when you’re in the middle of work.

Here’s the good news: PowerShell can grab all that BIOS information without restarting anything. In this tutorial, I’ll show you exactly how to get BIOS information using PowerShell using various methods.

Why Would You Need BIOS Information Anyway?

Before we jump into the commands, let’s talk about when this actually matters:

  • Checking if you need a BIOS update – Some updates fix security issues or hardware compatibility problems
  • Troubleshooting hardware issues – Tech support often asks for this info
  • Computer inventory – If you manage multiple computers, you need to track this stuff
  • Verifying UEFI vs Legacy BIOS – Important when installing operating systems or troubleshooting boot issues
  • Documentation – When setting up new systems or keeping records

Alright, let’s get into it.

Get BIOS Information Using Get-WmiObject cmdlet

Open PowerShell. You don’t need to run it as Administrator for this – just regular PowerShell works fine.

Type this command:

Get-WmiObject -Class Win32_BIOS

Press Enter, and you’ll see something like this:

SMBIOSBIOSVersion : F.23
Manufacturer      : HP
Name              : F.23
SerialNumber      : CND12345AB
Version           : HPQOEM - 1

You can also see the exact information in the screenshot below:

Get BIOS Information Using PowerShell

That’s it. You just pulled BIOS information without rebooting.

Check out Get HP BIOS Settings Using PowerShell

What Does All That Information Mean?

Let’s break down what you’re seeing:

  • SMBIOSBIOSVersion – This is your BIOS version number. You’ll need this when checking for updates.
  • Manufacturer – Who made your BIOS (usually the same as your computer manufacturer)
  • Name – Another reference to the BIOS version
  • SerialNumber – Your computer’s serial number (handy for warranty claims)
  • Version – The BIOS version in a different format

The Modern Way (Using Get-CimInstance)

Microsoft recommends using Get-CimInstance instead of Get-WmiObject these days. It’s faster and works better with newer PowerShell versions.

Here’s the updated command:

Get-CimInstance -ClassName Win32_BIOS

The output looks identical, but this command runs faster and is more reliable on Windows 10 and Windows 11.

Here is the exact output in the screenshot below:

How to Get BIOS Information Using PowerShell

I use this one in my scripts now. It’s the way forward.

Read Get HP BIOS Version Using PowerShell

Get Just the Information You Need

Sometimes you don’t need everything – just one specific piece of information. Here’s how to filter the output.

Get Only the BIOS Version

(Get-CimInstance -ClassName Win32_BIOS).SMBIOSBIOSVersion

This gives you just the version number. Clean and simple.

Get the Manufacturer

(Get-CimInstance -ClassName Win32_BIOS).Manufacturer

Get the Serial Number

(Get-CimInstance -ClassName Win32_BIOS).SerialNumber

This is really useful when you need to register products or check warranty status.

Make the Output Look Better

The default output works, but it’s not pretty. Let’s format it better.

Using Format-List

Get-CimInstance -ClassName Win32_BIOS | Format-List *

This shows ALL properties in a nice list format. You’ll see stuff you didn’t even know was there:

  • BIOSVersion – Array of BIOS versions
  • BuildNumber – Build information
  • Caption – Description of the BIOS
  • CurrentLanguage – BIOS language setting
  • InstallDate – When the BIOS was installed (sometimes null)
  • PrimaryBIOS – Whether this is the primary BIOS
  • ReleaseDate – When this BIOS version was released
  • Status – Current status (usually “OK”)

Using Format-Table

Get-CimInstance -ClassName Win32_BIOS | Format-Table -AutoSize

This creates a neat table. The -AutoSize parameter makes the columns fit the content.

Selecting Specific Properties

If you want only certain fields displayed nicely:

Get-CimInstance -ClassName Win32_BIOS | Select-Object Manufacturer, SMBIOSBIOSVersion, SerialNumber, ReleaseDate

This shows just the information you picked, in a clean format.

Check out Update PowerShell on Windows 11

Check UEFI or Legacy BIOS

This is a common question: Is my system using UEFI or old-school Legacy BIOS?

Here’s how to check:

$env:firmware_type

If this returns nothing, try this instead:

Get-CimInstance -ClassName Win32_BIOS | Select-Object -ExpandProperty Manufacturer, SMBIOSBIOSVersion

Actually, the better way is:

if (Test-Path "$env:SystemDrive\EFI") { "UEFI" } else { "Legacy BIOS" }

But the most reliable method is:

$bootMode = (Get-CimInstance -ClassName Win32_ComputerSystem).BootupState
if ($bootMode -match "UEFI") { "UEFI" } else { "Legacy BIOS or Unable to Determine" }

Actually, scratch all that. Here’s the command that actually works consistently:

try {
    Get-SecureBootUEFI -Name SetupMode
    Write-Host "UEFI"
} catch {
    Write-Host "Legacy BIOS"
}

If it returns information, you’re running UEFI. If it errors out, you’re running Legacy BIOS.

Get BIOS Info from Remote Computers

If you manage multiple computers, you can check BIOS info remotely.

Get-CimInstance -ClassName Win32_BIOS -ComputerName "REMOTE-PC-NAME"

Replace “REMOTE-PC-NAME” with the actual computer name.

For multiple computers:

$computers = "PC1", "PC2", "PC3"
foreach ($computer in $computers) {
    Get-CimInstance -ClassName Win32_BIOS -ComputerName $computer | Select-Object PSComputerName, Manufacturer, SMBIOSBIOSVersion
}

This loops through each computer and grabs the BIOS info.

Check out List Windows Features Using PowerShell

Export BIOS Information to a File

Need to save this information? Here’s how.

Export to CSV

Get-CimInstance -ClassName Win32_BIOS | Select-Object Manufacturer, SMBIOSBIOSVersion, SerialNumber, ReleaseDate | Export-Csv -Path "C:\BIOSInfo.csv" -NoTypeInformation

This creates a CSV file you can open in Excel.

Export to Text File

Get-CimInstance -ClassName Win32_BIOS | Out-File -FilePath "C:\BIOSInfo.txt"

Simple text file output.

Export to HTML Report

Get-CimInstance -ClassName Win32_BIOS | ConvertTo-Html | Out-File -FilePath "C:\BIOSInfo.html"

Opens nicely in a web browser.

Create a Reusable Script using a Function

Let’s put this together into a script you can save and run anytime.

Open Notepad and paste this:

# Get BIOS Information Script
Write-Host "Gathering BIOS Information..." -ForegroundColor Green

$biosInfo = Get-CimInstance -ClassName Win32_BIOS

Write-Host "`nBIOS Details:" -ForegroundColor Yellow
Write-Host "Manufacturer: $($biosInfo.Manufacturer)"
Write-Host "Version: $($biosInfo.SMBIOSBIOSVersion)"
Write-Host "Serial Number: $($biosInfo.SerialNumber)"
Write-Host "Release Date: $($biosInfo.ReleaseDate)"
Write-Host "Status: $($biosInfo.Status)"

# Check for UEFI
Write-Host "`nBoot Mode:" -ForegroundColor Yellow
try {
    Get-SecureBootUEFI -Name SetupMode | Out-Null
    Write-Host "UEFI Mode"
} catch {
    Write-Host "Legacy BIOS Mode"
}

Write-Host "`nDone!" -ForegroundColor Green

Save it as Get-BIOSInfo.ps1

To run it, open PowerShell, navigate to where you saved it, and type:

.\Get-BIOSInfo.ps1

Read Install Windows Updates Using PowerShell

Common Issues and Solutions

“Access Denied” Errors

If you get access denied when checking remote computers, make sure:

  • You have admin rights on the remote computer
  • Windows Remote Management (WinRM) is enabled
  • The remote computer’s firewall allows WMI traffic

No Information Returned

Sometimes the command returns nothing. Try:

  • Running PowerShell as Administrator
  • Using Get-WmiObject instead of Get-CimInstance
  • Checking if WMI service is running: Get-Service Winmgmt

Release Date Shows as DateTime Object

The ReleaseDate might look weird (like “20230815000000.000000+000”). Convert it:

$biosInfo = Get-CimInstance -ClassName Win32_BIOS
[Management.ManagementDateTimeConverter]::ToDateTime($biosInfo.ReleaseDate)

Actually, with Get-CimInstance, this is usually automatic. If it’s not converting, the BIOS might not have a proper release date stored.

Practical Use Cases

Here are some real-world scenarios where I’ve used these commands:

Before updating drivers – I check the BIOS version to see if the manufacturer recommends a BIOS update first.

Computer inventory spreadsheets – Export BIOS info to CSV for all computers in the office.

Troubleshooting boot issues – Verify UEFI vs Legacy before trying to fix boot problems.

Warranty claims – Grab the serial number without flipping the laptop over or opening the case.

Wrapping Up

In this tutorial, I will explain how to get BIOS information using PowerShell using several methods. I recommend starting with Get-CimInstance -ClassName Win32_BIOS and build from there.

You don’t need to memorize everything. Bookmark this page or save the script somewhere handy. Next time you need BIOS info, you’ll have it in seconds without rebooting.

The key commands to remember:

  • Get-CimInstance -ClassName Win32_BIOS – Basic BIOS info
  • Add | Format-List * – See all properties
  • Add | Select-Object – Pick specific properties
  • Export with | Export-Csv – Save to file

That’s it. Now you’re equipped to handle BIOS information like a pro, without the hassle of entering BIOS setup during boot.

You may also like the following tutorial:

100 PowerShell cmdlets download free

100 POWERSHELL CMDLETS E-BOOK

FREE Download an eBook that contains 100 PowerShell cmdlets with complete script and examples.