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)

This post covers script version 2.3.0. This is the HP Client Management Script Library (HPCMSL) variant of my HP BIOS password management script. It performs the same task as the WMI-based variant - automatically setting, changing, or clearing the Setup and Power-On passwords with logging and optional user prompts - but it uses the HPCMSL cmdlets instead of talking to the HP WMI interface directly. If you would rather avoid the module dependency, see the WMI variant. ...

May 22, 2026 · 8 min

HP BIOS Settings Management (HPCMSL)

This post covers script version 2.3.0. This is the HP Client Management Script Library (HPCMSL) variant of my HP BIOS settings management script. It performs the same task as the WMI-based variant - getting a list of current BIOS settings and setting BIOS settings from either the body of the script or a CSV file - but it uses the HPCMSL cmdlets instead of talking to the HP WMI interface directly. If you would rather avoid the module dependency, see the WMI variant. ...

May 22, 2026 · 8 min

Dell BIOS Password Management - WMI

This post was updated on May 25th, 2026 and covers script version 2.3.0. Earlier this year, I wrote about how to manage Dell BIOS passwords using PowerShell. The method described in that post uses the DellBIOSProvider PowerShell module. This method works, but I was not completely satisfied with it, as the PowerShell module needs to be downloaded and installed on every system the script runs on. Thankfully, Dell recently released a technical whitepaper documenting WMI classes that can be used to directly modify BIOS settings without needing an outside program or PowerShell module. This allowed me to create a new version of the Dell BIOS Settings Management script that does not require any additional content to function. ...

September 11, 2020 · 10 min

Dell BIOS Settings Management - WMI

This post was updated on May 25th, 2026 and covers script version 2.3.0. Earlier this year, I wrote about how to manage Dell BIOS settings using PowerShell. The method described in that post uses the DellBIOSProvider PowerShell module. This method works, but I was not completely satisfied with it, as the PowerShell module needs to be downloaded and installed on every system the script runs on. Thankfully, Dell recently released a technical whitepaper documenting WMI classes that can be used to directly modify BIOS settings without needing an outside program or PowerShell module. This allowed me to create a new version of the Dell BIOS Settings Management script that does not require any additional content to function. ...

September 11, 2020 · 11 min

Installing the HP Client Management Script Library

Update - May 20th, 2026 The HP Client Management Script Library has been around for several years now and has grown considerably since I originally wrote this post. The HPCMSL module now includes 14 sub-modules and supports both PowerShell 5.1 and PowerShell 7. I’ve updated the PowerShell script and the content in this post to reflect the current state of the HPCMSL module. For details on what has changed, see the “What Changed” section at the bottom of this post. ...

March 10, 2020 · 10 min

BIOS Management - Example Task Sequences

Warning The scripts bundled in these zip files are outdated and predate the v2 modernization. Updated example task sequences are still on the to-do list. For the current scripts, see the posts linked below. ...

February 24, 2020 · 3 min

Dell BIOS Settings Management - DellBIOSProvider

This post was updated on May 25th, 2026 and covers script version 2.3.0. Update: Dell does now provide native WMI classes to manage BIOS settings on newer models. For more information, see this post: Dell BIOS Settings Management - WMI. For information on using the Dell PowerShell module to configure settings on older models, continue reading this post. This post is one of 3 posts in my series on managing BIOS settings using PowerShell. I’ve also written about HP and Lenovo. In this post I’ll be talking about using PowerShell to manage Dell BIOS settings. ...

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