How to Inventory Lenovo BIOS and UEFI Settings with ConfigMgr

lenovo-laptop

When starting any operating system deployment project, it is a good idea to know what systems are in your environment so that you can determine which of these systems need to support the new OS. Some systems may need to be replaced, where as others might only need a BIOS UEFI update. It is also a good idea to standardize on the BIOS UEFI settings for each supported model in the environment. This ensures that consistent settings are used so that certain systems management features function correctly (for example, like wake-on-lan).

Now that Windows 10 is here, now is the time to standardize on native UEFI as the default boot mode. When making this switch, it is also important to enable Secure Boot at the same time. But, before you can do that, you need to determine not only what is in your environment, but how each system is configured.

You can inventory these hardware specific settings with System Center Configuration Manager. For the Lenovo systems this is pretty simple – this information is already stored in WMI and does not require anything to be installed on the clients for it to be enabled. The information is all stored in the Namespace: root/wmi. In order to get this information into ConfigMgr, we need to add the classes to the Default Client Settings Hardware Inventory.

  1. Open the Default Client Settings, select Hardware Inventory and click the Set Classes button.
    01 Default Client Settings
  2. On the Hardware Inventory Classes window, click the Add button.
    02 Hardware Inventory Classes
  3. On the Add Hardware Inventory Class window, click the Connect button.
    03 Add Hardware Inventory Class
  4. If the system that is running the ConfigMgr Console is a Lenovo, leave the pre-populated computer name. Otherwise type the computer name of a Lenovo system that is current on the network. For the WMI namespace field, enter: root\wmi and check the Recursive box. Enter credentials if connecting to a remote system and click the Connect button.
    04 Connect to Windows Management Instrumentation
  5. On the Add Hardware Inventory Class window, select the following class: Lenovo_BiosSetting and click OK. This enables us to inventory BIOS UEFI settings (current and possible) and also the device boot order for Legacy Boot and UEFI Boot.
    05 Add Hardware Inventory Class
  6. Back on the Hardware Inventory Classes window, I recommend un-selecting the class for the Default Client Settings (in fact I recommend trimming the Default Client Hardware Inventory Classes down to just a few and target only the necessary classes via Custom Client Setting). We will add them to a Custom Client Settings designed for Workstations. Unselect Lenovo_BiosSetting and click OK.
    06 Hardware Inventory Classes
  7. On the Default Settings window, click OK.
    07 Default Settings
  8. Next, create a Custom Client Device Settings, give it the name Workstation Client Settings, select Hardware Inventory (or use a previously created one).
    08 Create Custom Client Device Settings
  9. Click on Hardware Inventory in the left pane and click Set Classes.
    09 Create Custom Client Device Settings
  10. Select Lenovo_BiosSetting  and the following fields should be selected: Active CurrentSetting (InstanceName gets selected by default) and click OK. These are the fields that have useful information that we can use for reporting.
    10 Hardware Inventory Classes
  11. On the Create Custom Client Device Settings window, adjust the desired Hardware inventory schedule and click OK.
    12 Create Custom Client Device Settings
  12. Deploy the newly created Workstation Client Settings out to a collection that contains Lenovo workstation systems. I have one called All Workstation Clients.
    13 Workstation Client Settings
  13. On a targeted Lenovo system, kick off a Machine Policy Retrieval & Evaluation Cycle and then a Hardware Inventory Cycle. In the InventoryAgent.log on the client, you should find an entry being inventoried for the newly defined namespace.
    13 Inventory agent log
  14. Back in the ConfigMgr Console, use the Resource Explorer and open up the Hardware Inventory for the system that was used in the previous step. Here you will see that the new class and corresponding values have been added.
    14 Resource Explorer
  15. Unlike Dell and HP, Lenovo is a bit limited on the information that is provided (sorry Lenovo you get a F in this category). Both Dell and HP show current values and possible values in different fields. Lenovo only lumps the current setting and value in the same field. In order to determine if a machine is UEFI capable you need to look for the SecureBoot setting. This setting was not available on an older T410 (which does not support UEFI), but it is available on a newer T450.

Hopefully you found this post useful and helps you to gather and report on Lenovo specific settings using System Center Configuration Manager.

Originally posted on https://miketerrill.net/

How to create a HP BiosConfiguration Utility Package in ConfigMgr

01 HP Logo

HP has a utility that is similar to the Dell’s Command | Configure utility (see How to create a Dell Command-Configure Package in ConfigMgr) called the HP BIOS Configuration Utility that allows for reading and setting BIOS/UEFI values on HP systems. The latest release (version 4.0.13.1 at the time of this blog post) can be found on the HP Client Management Solutions page in the Download Library. The HP BIOS Configuration Utility can be used to enable and standardize BIOS/UEFI settings automatically across the enterprise, yielding a consistent, standard environment. Now that Windows 10 is here, organizations are going to want to configure UEFI as the default so that they can leverage features like Secure Boot, Device Guard and Credential Guard.

The HP BIOS Configuration Utility is only command line (in other words, there is not a GUI component like Dell’s Command | Configure utility). However, the HP BIOS Configuration Utility can output an answer file that can then be used to apply to other systems. For this post, I am going to show you how to create a basic ConfigMgr Package that can be used as part of an OSD Task Sequence

The first thing you need to do is download it from the HP Client Management Solutions page (or search on HP BIOS Configuration Utility) and install it on a HP system.

Next, create a directory on your ConfigMgr Package repository share where you store the source files for your ConfigMgr Packages (for example \\ContentSource\Packages\HP\BIOS Configuration Utility-WinPE\4.0.13.1).

Locate the install directory and copy the contents of the installation directory (minus the link to the User’s Guide) to the Package share. On a x64 system, the default install location is C:\Program Files (x86)\Hewlett-Packard\BIOS Configuration Utility.

01 Default Install Directory

Create a file in the root of the Package directory called BCU.cmd. Use the following for the contents of the file:

@ECHO OFF

set cmdline=%*

ECHO == Seting BIOS Settings ==
 
REM Determine Arch
IF "%PROCESSOR_ARCHITECTURE%" == "AMD64" GOTO :X64
GOTO X86
 
:X64
SET BCU="BiosConfigUtility64.exe"
GOTO RunBCU
 
:X86
SET BCU="BiosConfigUtility.exe"
GOTO RunBCU
 
:RunBCU
ECHO --Running command %BCU% %CMDLINE%
%BCU% %CMDLINE%
 
EXIT /B %errorlevel%

This file handles the logic to run the correct exe based on the currently detected platform. The final Package source directory should look like the following:

02 HP BIOS Config Package Source Directory

Create a Package in ConfigMgr like you normally would and distribute it to the Distribution Points. A Program is not required, so that can be skipped.

In a future post, I will show how this can be used in an OSD Task Sequence.

Originally posted on http://miketerrill.net