Securing BIOS Passwords in Unattended Deployments

My Dell, HP, and Lenovo BIOS password and settings scripts all accept the BIOS password as a plain-text parameter. This keeps the scripts simple and broadly compatible, but it means that how you deliver the password to the script is also how you secure the password. This post covers how to do that safely under Configuration Manager and task sequences, and how the built-in CMS support added in version 2.3.0 makes it easier. ...

May 24, 2026 · 9 min

HP BIOS Password Management (HPCMSL)

A PowerShell script to set, change, or clear HP BIOS setup and power on passwords using the HP Client Management Script Library (HPCMSL).

May 22, 2026 · 8 min

HP BIOS Settings Management (HPCMSL)

A PowerShell script to get or set HP BIOS settings, or reset them to defaults, using the HP Client Management Script Library (HPCMSL).

May 22, 2026 · 8 min

Dell BIOS Password Management - WMI

A PowerShell script to set, change, or clear Dell BIOS admin and system passwords using WMI, with no module required. For models released after 2018.

September 11, 2020 · 10 min

Dell BIOS Settings Management - WMI

A PowerShell script to get or set Dell BIOS settings, load defaults, or set the boot order using WMI, with no module required. For models released after 2018.

September 11, 2020 · 11 min

Installing the HP Client Management Script Library

A PowerShell script to install the HP Client Management Script Library (HPCMSL) in Windows or WinPE, plus its prerequisites and the other ways to install it.

March 10, 2020 · 10 min

BIOS Management - Example Task Sequences

Example Configuration Manager task sequences for the Dell, HP, and Lenovo BIOS scripts. The bundled scripts are outdated; current ones are in the linked posts.

February 24, 2020 · 3 min

Dell BIOS Settings Management - DellBIOSProvider

A PowerShell script to get or set Dell BIOS settings, or set the boot order, using the DellBIOSProvider module. Settings come from the script or a CSV file.

February 21, 2020 · 7 min

Configuration Manager Collection Creation and Removal Scripts

Update - July 3rd, 2026 I recently revisited this script for the first time in a few years and ended up rewriting large parts of it. The collection creation script is now order-independent (the rows in the CSV file no longer need to be sorted by dependency), validates the entire CSV file before touching Configuration Manager, and supports fully unattended runs. I also wrote a new companion script, Remove-Collections.ps1, that bulk deletes collections. I’ve updated and expanded this post to cover both scripts. For details on what has changed, see the “What Changed” section at the bottom of this post. ...

February 18, 2020 · 10 min

App Packaging PowerShell Functions

I’ve recently been working on a lot of app packaging, and I decided to take the opportunity to update my scripts. In this post I’ll cover 3 PowerShell functions that I found to be the most useful. The functions can be found on my GitHub. Invoke-MsiExec This function works with msiexec.exe. The function allows for installing or uninstalling a .msi based application. The function has a number of parameters: FilePath - The path to the .msi or .msp file Guid - The GUID of the MSI-based application to be uninstalled Install - Indicates that the /i switch should be used when calling msiexec.exe Uninstall - Indicates that the /x switch should be used when calling msiexec.exe Patch - Indicates that the /p switch should be used when calling msiexec.exe Arguments - A comma separated list of arguments to pass to msiexec.exe ExitCodes - A comma separated list of non-standard exit codes Some notes about the parameters: ...

January 30, 2020 · 3 min