In the last post, I talked about using Reference files to lock in a set of updates for deployment. In this post, I’m going to show you how to deploy Updates using HP Image Assistant (HPIA) with a ConfigMgr Task Sequence.
The Task Sequence I’ve created is pretty dynamic, so you can either create packages for a few things, or pull them from the internet, completely up to you.
Optional Packages Used in my Task Sequence:
- HPIA 5.1.6 Contents
- ServiceUI.exe
- Reference Files
Download the Export (No Dependencies): HPIA Task Sequence (11369 downloads )
These are all completely optional depending on how you want to run HPIA. I have the Task Sequence run different ways based on if a user is logged on. I’m leveraging Service UI to display the progress bar of HPIA if a user is logged on, if not, I don’t care, and I don’t show it. I also display additional notifications and have a longer reboot notification.
Variables:
- DownloadHPIAFromInternet – This will run the step that has a script that will download the latest version of HPIA from the internet when set to TRUE. If Set to False, it will use HPIA from a package you have in CM
- UseRefFilePackage – This will use a package of pre-created reference files for HPIA to lock in versions to ensure that throughout the entire deployment process, machines get the same updates, even if newer ones are released, this allows for testing and full control.
- Action – This is the Action that is passed to the command line for HPIA. I have it set to “INSTALL” so that it will install the updates, however for testing, you can set it to “LIST” to have it scan and provide details in the logs of what it recommends without making changes.
Steps:
Set UserLoggedOn Variable will check the machine to see if a user is logged on, if so, sets a variable “UserLoggedOn”. If there is a user logged on, additional notifications and information is presented to the user, as well as a delayed restart.
Download HPIA From Internet will run if the TS Variable DownloadHPIAFromInternet is set to TRUE. It reaches out to HP and pulls the latest version, extracts it to a temp folder, then sets that folder as a variable (HPIAContent01) to be used by the HPIA command line.
Download HPIA from DP will download the HPIA Utility from a Package in CM when the TS Variable DownloadHPIAFromInternet is NOT set to TRUE. It then sets that folder as a variable (HPIAContent01) to be used by the HPIA command line.
Download Tools will download any other items you want to make available during the Task Sequence, currently I have it with Service UI. It then sets that folder as a variable (TOOLS01) to be used by the HPIA command line.
Download HPIA Ref Files will download all of the reference files you’ve created for your devices. It then sets that folder as a variable (HPIARefFiles01) to be used by the HPIA command line.
Determine Reference File will look at the machine the Task Sequence is running on it, then find the correct reference file to be applied to the command line. If no suitable reference file is found (one that doesn’t match both the Platfrom & OS Ver / Build), then the command line will skip using a reference file, and will fall back on having HPIA grab whatever is the latest.
Build Command Line will set variables to build the command line to run HPIA based on if a user is logged in or if a Reference file is available.
Running Updates – Look for Popup Box for Details will trigger HPIA based on the command line variables created in the previous step
Set HPIA Exit Info will get the return code from the previous step, then add helpful information about how HPIA exited for reporting and in the popup dialog if a user is logged on. It will also capture if a reboot is required by any of the installs and trigger the restart process at the end if needed.
Restart Computer – 1 Hour Delay will trigger if there is No Logged on User and HPIA requires a Restart.
Launch Completed Notification will popup the dialog box and show the status for the logged on user:
CM Client Initiate Restart Countdown will trigger if a user is logged on and a Restart is Required. This will trigger the CM Restart Dialog on the Endpoint, leveraging your Client Settings for a Restart. – Trigger Machine Restart, Controlled by CM, via PowerShell
NOTE, since taking the screen captures, I’ve added a step to suspend Bitlocker if a reboot is required, incase BIOS get updated.
Running the Task Sequence
I have it set as a High Impact Task Sequence, so it gives additional popups if a user triggers it:
Once it downloads and starts, you’ll see the HPIA Progress bar because of Service UI.
When completed, if Restart is required, it will say “System will initiate Restart”, otherwise it just says that it recommends you restart.
After a minute or so, if a restart was required, end user will see:
The Configuration Manager Client is initiating the Restart with the settings applied in the Client Policy.
GARYTOWN.COM
Just wondering if you have tried running this during a OSD build task sequence.
yes!
Can you run it “as is” in a TS or are there pre-reqs that aren’t listed here? i.e. having HPIA pulled in as a package from CM?
You can use it as is, and it will download HPIA from the internet, or you can create your own package with HPIA in it. If you want to use Reference files, you would need to create your own. So yes, it will work “as is”, however you can customize to control it to your liking. Please go through each step and see exactly what it does before running. That will answer any additional questions you have.
Is the 1-hour delay required during OSD, or can this be shortened to reduce build time?
You can make it whatever you want. Im sure when I wrote this, I had something in mind, but I can’t recall.
Thanks for this solution
I’m deploying this in an OSD task sequence and I get an error during the “HPIA from the internet” step with generic code 00000001
But I can’t seem to find anything related in the smsts.log
I will try with “HPIA from DP” as a next step to see if that resolves the issue
Hi,
I have the issues resolved
But I’m left with one more thing…
The reference file is found when running the TS from a a standard Software Center
But when used in an OSD it can not find the reference file, although it’s downloaded and is available in the package
Maybe it’s because it’s running in Win PE still and the script can’t find the correct $Platform or $WindowsRelease
Perhaps it’s useful to Write-Output them as well
HPIA does not work in WinPE, it requires being run in the Full OS.
For OSD, I still use the standard HP Driver packs, then once in the full OS (anytime after the Setup Windows & ConfigMgr Step), I run HPIA to update everything to the latest.
First, thank you for a great detailed post! Solved a great issue for us.
In regards to Bitlocker, I am wondering whydisable and not suspend? and there is no re-enable bitlocker.
Yes, you should suspend BitLocker. If I said “Disable” anywhere, I didn’t mean turn off BitLocker, but I mean to suspend it.
Where did it say to Disable?
Hi, thanks for a great post!
One thing that came to mind is BIOS passwords. I do not see anything here tackling possible BIOS passwords if the BIOS needs to be updated.
You’d have to make modifications to support BIOS Passwords.
I do NOT push BIOS Updates with HPIA, I use HP Connect or get-hpbioswindowsupdate function in HPCMSL
What drivers are you applying earlier in the deployment to get the devices any needed network/storage functionality? Are you still applying per-model driver packages as normal, then just relying on HPIA to update them?
I still use the Per-Platform Driver Packs. You could probably just inject the WinPE driver pack into your WIM and call it good, as HPIA SHOULD update everything, but I’ve seen where HPIA doesn’t get everything the first pass if I didn’t apply the driver pack.