Recently I have done a bunch of “Deploying Windows Server 2008 R2” sessions, one at MMS 2011 on Server Deployment using MDT 2010 and one at Geek Week and at both occasions I was asked to give the details on how I do deploy HP servers. Now, this is not a complete guide from A-Z, but it should give you something that covers most of the configuration needed and also you should be able to see the “pattern” on how to do this. If you do have some special requests, just send an email and I’ll do one more posting on the subject.
The goal for this post is too see how you could automate installation of drivers, support pack, firmware update on HP BL/DL/ML series of hardware (Yes, I’ll create another post on how to do it on Dell servers later…)
Support Pack
Ok, so lets assume we have a HP BL 465C G5 and we would like to install Windows Server 2008 R2 x64 SP1. We would also like to have the firmware updated and the support pack installed. I mean, that sound reasonable, right? Yes, it can be done, in fact I do this all the time, in fact so often that I hardly can remember how to do it manually anymore. If you would like to play with all the other switches that hpsum.exe can do, look for a file called CLIHELP.txt, it is in the same folder where you unpack the stuff.
Let’s begin with the support pack, current version is 8.60.
- Download HP PSP 8.60 from: http://h20000.www2.hp.com/bizsupport/TechSupport/DriverDownload.jsp?lang=sv&cc=se&prodNameId=3716247&taskId=135&prodTypeId=18964&prodSeriesId=3716246&lang=sv&cc=se
- Uncheck the “this files is download from internet stuff” on the properties page of the file, otherwise you risk to have that “safety” thing stuck on the files at that might get you to small issues later on.
- Create a folder for the PSP, call it “INSTALL – HP Support Pack 8.60” and in that folder create a folder called “source”. The Source folder is where we store everything that will be installed, the root folder is for storing scripts that works as wrappers to install the application. This very basic principal applies to EVERY application you are installing using MDT.
- In the root folder you create Install-HP_PSP.WSF that works as the wrapper and it should look like this:
<job id=”Install-HP_PSP”>
<script language=”VBScript” src=”..\..\Scripts\ZTIUtility.vbs”/>
<script language=”VBScript”>
‘//—————————————————————————-
‘// Solution: INSTALL
‘// Purpose: Install-HP_PSP
‘// Usage: cscript Install-HP_PSP.wsf [/debug:true]
‘// Version: 1.1 – 15 Mar 2011 – Mikael Nystrom
‘// This script is provided “AS IS” with no warranties.
‘//—————————————————————————-
‘// Global constant and variable declarations
‘//—————————————————————————-
Option Explicit
Dim iRetVal
‘//—————————————————————————-
‘// End declarations
‘//—————————————————————————-
‘//—————————————————————————-
‘// Main routine
‘//—————————————————————————-
On Error Resume Next
iRetVal = ZTIProcess
ProcessResults iRetVal
On Error Goto 0
‘//—————————————————————————
‘//
‘// Function: ZTIProcess()
‘//
‘// Input: None
‘//
‘// Return: Success – 0
‘// Failure – non-zero
‘//
‘// Purpose: Perform main ZTI processing
‘//
‘//—————————————————————————
Function ZTIProcess()
oLogging.CreateEntry “Install-HP_PSP: Starting Install”, LogTypeInfo
oUtility.RunWithHeartbeat(“source\hpsum.exe /silent /use_snmp”)
oLogging.CreateEntry “Install-HP_PSP: Finished Install”, LogTypeInfo
End Function
</script>
</job>
As you can see, the active part of the install is “hpsum.exe /silent /use_snmp”. There is a bunch of other settings you can use, but these are the ones I use.
Firmware Packages
We also need the firmware, it is possible to combine it so that patches and firmware installs at the same time, or even possible to let them find new firmware updates using the web, but this is the way I like it, a bit boring but it works…
- Download HP Firmware ISO from: http://h20000.www2.hp.com/bizsupport/TechSupport/DriverDownload.jsp?lang=en&cc=us&prodNameId=1844068&taskId=135&prodTypeId=18964&prodSeriesId=1844067&lang=en&cc=us
- Uncheck the “this files is download from internet stuff” on the properties page of the file, otherwise you risk to have that “safety” thing stuck on the files at that might get you to small issues later on.
- Create a folder for the PSP, call it “INSTALL – HP Firmware 9.20” and in that folder create a folder called “source”. The Source folder is where we store everything that will be installed, the root folder is for storing scripts that works as wrappers to install the application.
- Now, the trick is that when you extract the ZIP file that you download, it contains an ISO image, you need to open that and then extract the content from the ISO and save that in the Source folder
- In the root folder you create Install-HP_FW.WSF that works as the wrapper and it should look like this:
<job id=”Install-HP_FW”>
<script language=”VBScript” src=”..\..\Scripts\ZTIUtility.vbs”/>
<script language=”VBScript”>
‘//—————————————————————————-
‘// Solution: INSTALL
‘// Purpose: Install-HP_FW
‘// Usage: cscript Install-HP_FW.wsf [/debug:true]
‘// Version: 1.0 – 4 Apr 2011 – Mikael Nystrom
‘// This script is provided “AS IS” with no warranties
‘//—————————————————————————-
‘// Global constant and variable declarations
‘//—————————————————————————-
Option Explicit
Dim iRetVal
‘//—————————————————————————-
‘// End declarations
‘//—————————————————————————-
‘//—————————————————————————-
‘// Main routine
‘//—————————————————————————-
On Error Resume Next
iRetVal = ZTIProcess
ProcessResults iRetVal
On Error Goto 0
‘//—————————————————————————
‘//
‘// Function: ZTIProcess()
‘//
‘// Input: None
‘//
‘// Return: Success – 0
‘// Failure – non-zero
‘//
‘// Purpose: Perform main ZTI processing
‘//
‘//—————————————————————————
Function ZTIProcess()
oLogging.CreateEntry “Install-HP_Firmware: Starting Install”, LogTypeInfo
oUtility.RunWithHeartbeat(“Source\hp\swpackages\hpsum.exe /silent”)
oLogging.CreateEntry “Install-HP_Firmware: Finished Install”, LogTypeInfo
End Function
</script>
</job>
SNMP Configuration
We also need to fix SNMP (in most cases), so we need to install it and if you want SNMP to work correctly for the Support Pack you also need to configure it. And that of course is done by a script.
Create a folder called “CONFIG – SNMP”
In that folder create a file called “CONFIG-SNMP_Services.wsf” that looks like this:
<job id=”CONFIG-SNMP_Services”>
<script language=”VBScript” src=”..\..\Scripts\ZTIUtility.vbs”/>
<script language=”VBScript”>
‘//—————————————————————————-
‘// Solution: Hydration
‘// Purpose: Used to configure SNMP
‘// Usage: cscript CONFIG-SNMP_Services.wsf [/debug:true]
‘// Version: 1.0 – 3 Apr 2011 – Mikael Nystrom
‘//
‘// This script is provided “AS IS” with no warranties, confers no rights and
‘// is not supported at all.
‘//
‘//—————————————————————————-
‘//—————————————————————————-
‘// Global constant and variable declarations
‘//—————————————————————————-
Option Explicit
Dim iRetVal
‘//—————————————————————————-
‘// End declarations
‘//—————————————————————————-
‘//—————————————————————————-
‘// Main routine
‘//—————————————————————————-
On Error Resume Next
iRetVal = ZTIProcess
ProcessResults iRetVal
On Error Goto 0
‘//—————————————————————————
‘//
‘// Function: ZTIProcess()
‘//
‘// Input: None
‘//
‘// Return: Success – 0
‘// Failure – non-zero
‘//
‘// Purpose: Perform main ZTI processing
‘//
‘//—————————————————————————
Function ZTIProcess()
oLogging.CreateEntry “CONFIG-SNMP_Services Adding Community string Public to Registry”, LogTypeInfo
oShell.RegWrite “HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\SNMP\Parameters\ValidCommunities\Public”, 8, “REG_DWORD”
oLogging.CreateEntry “CONFIG-SNMP_Services Stopping SNMP Service”, LogTypeInfo
oUtility.RunWithHeartbeat(“NET.exe STOP SNMP /y”)
oLogging.CreateEntry “CONFIG-SNMP_Services Waiting 1000″, LogTypeInfo
wScript.Sleep 1000
oLogging.CreateEntry “CONFIG-SNMP_Services Starting SNMP Service”, LogTypeInfo
oUtility.RunWithHeartbeat(“NET.exe START SNMP /y”)
oLogging.CreateEntry “CONFIG-SNMP_Services Finished SNMP Configuration”, LogTypeInfo
End Function
</script>
</job>
Modifying the Task Sequence
There are many ways of dosing this, you can either do it in the database or customsettings.ini, but in most cases I have found it easier to do this in the task sequence.
You need to create a standard server task sequence with Windows Server 2008 R2 x64 and when you have done that you need to open it up and directly under “State Restore – Tattoo”, you add a new tree structure that looks like this:

As you can see I have added a new group called Hardware and under that folder you have HP. You can also see that the condition for running the content of that folder is that “Make” must be HP, same goes for the next step. The group called ProLiant BL 465c G5 has a similar filter, it is only processed when the “Model” is Proliant BL 465c G5. So you just add a folder structure based on make/model. You can get the Make by running “wmic csproduct get name” from the command prompt on the machine and if you need “Make” it is “wmic csproduct get vendor”
Adding the Application and Settings
No, using deployment workbench you browse down to applications and in there I normally create two folders, one is called INSTALL (Contains real applications) and CONFIG (contains only configuration scripts).
- Create a application with source files, pointing to “CONFIG – SNMP Services” folder, give the application the same name as the folder and set the run command to “cscript.exe CONFIG-SNMP_Services.wsf”
- Create a application with source files, pointing to “INSTALL – HP PSP 8.60” folder give the application the same name as the folder and set the run command to “cscript.exe Install-HP_PSP.WSF”
- Create a Bundle called “HP Support Pack”
- Modify the bundle “HP Support Pack” to be dependent of INSTALL – HP PSP 8.60
- Create a application with source files, pointing to “INSTALL – HP Firmware 9.20” folder give the application the same name as the folder and set the run command to “cscript.exe Install-HP_FW.WSF”
- Create a Bundle called “HP Firmware Update”
- Modify the bundle “HP Firmware Update” to be dependent of INSTALL – HP Firmware 9.20.
This way, you will only use the bundles whenever you reference these installations and that makes it so much easier if you update the support pack, the you just add a new support pack, flip inside the bundle, test and if it does not work as expected you can keep the old one while you are investigating “why” it fails. Again, there are at least 10 other ways of doing this, I just think it is easy and convenient.
Add tasks to the task sequence
Now it is time to do the last part of this, modifying the task sequence so it will do all the steps for you.
Open the task sequence and add the following tasks under the group for your server (in my case, the BL 465c G5)
- Install SNMP = Roles and Features with SNMP checked
- CONFIG – SNMP Services = Install Application – CONFIG – SNMP Services
- INSTALL – HP Support pack = The HP Support pack Bundle
- INSTALL – HP Firmware = The Firmware bundle
It should look something like this

So, as you can see it is not that hard to do it, should be able to figure out on how to do other similar tasks and for other vendor/models
/mike