HP BIOSConfigUtility Command Line in a Task Sequence

Posted on

First, let me start by saying there is already a good blog post which outlines how to use HP’s BIOSConfigUtility in an MDT task sequence (which can be easily translated into an SCCM task sequence).

I recently implemented this tool for a client to enable the TPM feature in BIOS in preparation for BitLocker.  The utility was being run from a task sequence with command line such as:

cmd.exe /c c:\temp\BIOSConfigUtility.exe /SetConfig:TPMEnable.REPSET /NewAdminPassword:"P@55word!"

In my testing, the BIOS password was being set properly, but the TPM enable would not get enabled.  BIOSConfigUtility.exe would terminate with error code 10, which essentially meant it was trying to enable TPM but the provided password is incorrect.  What I found to fix the problem was to instead specify the full path to TPMEnable.REPSET file.  So instead, the switch would instead be:


Differentiating Vostro 360 AIOs

Posted on

We purchase and use Dell all-in-ones (Vostro line) as the primary desktop in our organization.  The difficulty is that, as consumer hardware, the model can be modified or discontinued at any time without prior notice.  Needless to say it creates headaches from time-to-time.  Recently the Vostro 360 hardware was changed, resulting in the need for new drivers.  Within my SCCM task sequences, I have the install of drivers (within the full OS) limited based upon the name of the model.  The challenge with the Vostro 360 is that they maintained the same exact model name, but had different hardware configurations.  What I found was a main difference between the two types was the Bluetooth hardware ID.  So in addition to querying the model, I added a new query for the Bluetooth hardware.

The point of this post isn’t so much about the Vostro, but more about how I used Win32_PnPEntity to differentiate the two models so that the old config would get one set of drivers and the new config would get the other set of drivers.  In the driver install package step for the task sequence, simply click on the Options tab and add a WMI Query action with the following code:

Select * from Win32_PnPEntity where DeviceID like 'USB\\VID_0CF3&PID_3002%'

Automating Dell Vostro 330/360 BIOS Updates

Posted on

The majority of the desktops in our environment are Dell Vostro all-in-ones.  Even though this is consumer-line hardware and not subject to Dell’s OMCI tools, we purchased this model because of price and because Dell didn’t have a OptiPlex all-in-one.  The BIOS installers for these Vostros do not properly respond to the silent/unattended switches that they should support.  Fortunately there is a work-around with this simple process.

  • Extract the WINFLASH files:  Just simply double-click the installer then when it’s at the first dialog box for the upgrade, make a copy of the files from C:\ProgramData\WINFLASH.  Cancel out of the installation.
  • Create a script to run the command “winflash.exe %pathToWinFlash%\BIOS.bin /p /b /n /r“.  Note that it is extremely important that for BIOS.bin that you include the full path to the file because winflash.exe doesn’t check that its local directory contains the .bin file.
  • The restart of this will be suppressed, so remember to restart the computer after installation.

Voila!  You have now upgraded BIOS on the Dell Vostro 330 and/or 360.

Scripting Dell TouchPad configurations

Posted on Updated on

We recently received the new Dell E6320 and E6420 laptops.  After deployment of our standard image, which does not contain drivers, we package the full driver installers as provided by the manufacturer.  We found that for these new laptops, scrolling was not automatically enabled for the TouchPad’s.  I would say scrolling is a defacto usability standard.  To enable scrolling for the TouchPad, simply set the following in the registry:

Key: HKLM\SOFTWARE\Alps\Apoint\Button
Value Name: EnableWheel (dword)
Value: 33

Once a user logs into Windows for the first time, the values in HKLM are then sucked into HKCU.  In this way, scrolling is enabled by default but not enforced upon the user.

Script to Check Devices Without Drivers

Posted on Updated on

This is a quick script that I wrote to identify if a remote computer has a device without a driver installed.

' NAME: DevicesWithoutDrivers
' AUTHOR: Nick Moseley, https://t3chn1ck.wordpress.com
' DATE  : 3/30/2011
' COMMENT: Connects to WMI on a remote computer to check for devices without
' a driver installed.
Option Explicit
Dim oWMI, sComputerName, colItems, oItem
sComputerName = ucase(InputBox ("Enter Computer Name", "Name", "."))
Set oWMI = GetObject ("winmgmts:\\" & sComputerName & "\root\cimv2")
Set colItems = oWMI.ExecQuery ("Select * from Win32_PnPEntity where status = 'error'")

For Each oItem In colItems
 WScript.Echo "Name: " & oItem.Name & "; status = " & oItem.status

Dell BIOS Upgrade Switches

Posted on Updated on

I saw this come through the MyITForum email list on undocumented switches for Dell BIOS upgrades.  It’s useful information (but I haven’t tested it yet for myself)!

I’m doing it right now with SCCM OSD. I download the relevant BIOS from Dell and run it with undocumented switches. The ones I use are:

 -NOREBOOT: This prevents restarts – does not work with all machines, for example the Optiplex 780

-NOPAUSE: This makes the upgrade silent

 -FORCEIT: This prevents the check if there is external power attached. I use this since I upgrade BIOS from inside WinPE where this check fails.  Note: FORCEIT does only seem to work on laptops which is logical I guess.

Script to Disable HP Fingerprint Device

Posted on Updated on

This VBScript is for disabling the Fingerprint device in BIOS.  It has only been tested on a few newer HP models.

' AUTHOR: Nick Moseley , https://t3chn1ck.wordpress.com
' DATE  : 5/29/2009
' COMMENT: This script is for disabling the Fingerprint Device in BIOS
' It has been tested on HP models - 6515b, 6535b, 2510p - but may
' function for other models
Option Explicit
Const ForAppending = 8
Const wbemFlagReturnImmediately = 16
Const wbemFlagForwardOnly = 32
Dim oFSO, oFile, oWMI_BIOSSettingInterface, oItem, colItems, lFlags, iReturnValue 
' Open Log File
Set oFSO = CreateObject("Scripting.fileSystemObject")
Set oFile = oFSO.OpenTextFile ("C:\DisableFingerprintDevice.txt", ForAppending, True)
' Query WMI
lFlags = wbemFlagReturnImmediately + wbemFlagForwardOnly
Set oWMI_BIOSSettingInterface = GetObject("winmgmts:{impersonationlevel=impersonate}//./root/HP/InstrumentedBIOS")
Set colItems = oWMI_BIOSSettingInterface.ExecQuery("select * from HP_BIOSSettingInterface",,lFlags) 
' Configure Fingerprint Device to be disabled
For Each oItem In colItems 
  oItem.SetBIOSSetting iReturnValue, "Fingerprint Device", "Disable"
' If change was successful (exit code 0) then log
If iReturnValue = 0 Then
 WScript.Echo "Completed with: " & iReturnValue
 oFile.WriteLine "Disabled Fingerprint Device in BIOS (" & Date & " " & Time & ")"
 oFile.WriteLine("FAILURE: Could not disable Fingerprint Device, option not found in BIOS (" & Date & " " & Time & ")")
End If 
WScript.Quit ()