We could spend all day taking screen shots and Polaroid pictures of the BIOS on workstations.   We COULD do that.

Or we could let Powershell and the Dell OMCI do the work.

Bios settings are stored in DCIM_BiosEnumeration.   But initially if you just did this

GET-WMIOBJECT DCIM_BiosEnumeration –namespace root\dcim\sysman

You’d have an unreadable screen.  Piping it into a Format-Table like this ALSO doesn’t help

GET-WMIOBJECT DCIM_BiosEnumeration –namespace root\dcim\sysman | FORMAT-TABLE

Because of the volume of data being returned.  Most of it I just don’t CARE what it is.  So I’ll save you the trouble.   I ran a GET-MEMBER on my machine to show the properties you care about

GET-WMIOBJECT DCIM_BiosEnumeration –namespace root\dcim\sysman | GET-MEMBER

Once I poked through the list I found the ones that seem to yield information consistently.     They are

AttributeName which is the name of the BIOS Setting

CurrentValue which is what it is set to now (numeric)

PossibleValues which is possible numeric values the BIOS Setting can have

PossibleValuesDescription which shows you the names DESCRIBING what those silly numbers mean

So running this script on a computer

Get-WmiObject -Namespace root\dcim\sysman DCIM_BiosEnumeration | Select-Object AttributeName,CurrentValue,PossibleValues,PossibleValuesDescription

Will show me all the settings on a Dell computer.   If I make a slight change and turn this into a script called GET-DELLBIOS.PS1

Param($Computername)

Get-WmiObject -Namespace root\dcim\sysman DCIM_BiosEnumeration –computername $Computername | Select-Object AttributeName,CurrentValue,PossibleValues,PossibleValuesDescription

I can now run a script with the –computername parameter and gather an inventory of all my Dell systems and their particular settings.

GET-DELLBIOS.PS1 –computername myremotecomputername

Pretty cool eh?  Now go forth and use your powers wisely.

With Great Powershell comes Great Responsibility

Sean
the Energized Tech

Advertisements