HP has introduced another batch of over 90 PowerShell cmdlets with a focus on BIOS management.  The new batch of cmdlets joins two previous batches of cmdlets that allow management of iLO, the onboard IP management interface on ProLiant servers,  and for Onboard Administrator, the primary management interface on HP’s BladeSystem hardware.
OneView introduced the ability to set BIOS settings during the provisioning of systems and these BIOS cmdlets put the same level of control into more system admins and engineer’s hands, even if the environment has not adopted HP OneView.
When I read this news, the first thing that popped into mind was using this to ensure that my Windows cluster hosts are set to the correct Power Management mode and easily enough, that is the example that is found in the HP documentation that shipped with the toolkit. Â For my Windows clusters running things like Exchange or SQL, we follow the best practice to set the Power Management to Static High Performance mode and this toolkit gives me an easy way to write a script to collect this information from multiple hosts and send an email alert for hosts where this is set incorrectly.
Use Scenarios
The HP BIOS Cmdlets are compatible with both WinPE and standard Windows installations meaning that the BIOS cmdlets can be used during system deployment to adjust and set BIOS settings on a host. Â This is useful if an enterprising admin wants to ensure the BIOS settings of the hardware during an System Center Config Management installation or with third party imaging systems like Altiris. Interestingly, there is a cmdlet that create an HP customized WinPE image that is deployed with the BIOS cmdlet distribution.
The bulk of the cmdlets are Get- and Set- verb cmdlets, as you would expect. Â These cmdlets allow you to retrieve and set specific settings with each cmdlet. Â All of the BIOS cmdlets are listed at the end of this post as an overview.
Getting Started
There are some pre-requisites, but anyone using PowerShell will likely already have the pre-requisites installed. Â The pre-req’s are:
- Microsoft .Net Framework 4 or Microsoft .Net Framework 4.5
- Windows Management Framework 3.0 or Windows Management Framework 4.0
- For WinPE, Windows Assessment and Development Kit is needed.
The installation for the HP BIOS PowerShell cmdlets is found at www.hp.com/go/powershell. Â The download is an MSI and the installation is simple and straight forward. Â The QuickSpecs are found here for easy reference.
Connecting & Disconnecting
Connecting to a host is simple. Â According to the documentation, the syntax for a connection is very similar to connecting to vCenter Server using PowerCLI.
[code lang=”PowerShell”] $variable = Connect-HPBIOS 192.168.0.100 -Username "username" -Password "password"[/code]
All of the documentation and examples show using a connection variable with the Get- and Set- cmdlets, so that may be a best practice, but it is entirely possible to perform a connection in a single line if you only need to adjust a single setting. Â Connecting takes a bit of time, so using an establish connection will save you a lot of time.
Storing the connection in a variable for reference also allows you the benefit of establishing multiple sessions to different hosts. Â This could be useful for setting settings across multiple hosts with a simple For loop in PowerShell.
Disconnecting is just as simple.
[code lang=”PowerShell”]Disconnect-HPBIOS $variable[/code]
Receiving Updates
Like the previous version of HP cmdlets for iLO and Onboard Administrator, HP has packaged an Update-HPBIOSModuleVersion cmdlet that checks the HP website and automatically pulls down the newer versions of HP BIOS cmdlets when they are available.
What do you connect to?
So, it begs the question – when you do a Connect-HPBIOS cmdlet, what are you connecting to?  The answer is the Windows OS.  You are not connecting to the iLO, as I first thought.  So, this means, only targets running the Windows OS are going to be viable to you.  I had hoped that maybe the PowerShell toolkit was talking to iLO and its RESTful API, but this is not the case. Connected to the RESTful API would have meant you could use PowerShell to script against Linux and VMware hosts in addition to Windows hosts, but perhaps this will come in future versions.
Quick References of the BIOS Cmdlets
Cmdlet | Description |
Connect-HPBIOS | Creates connections to one or multiple BIOS targets. |
Disconnect-HPBIOS | Closes the connection. |
Get-HPBIOSACPI_SLIT | Gets BIOS ACPI SLIT preferences information. |
Get-HPBIOSAdminInfo | Gets the reference information for the server administrator. |
Get-HPBIOSAdvancedMemoryProtection | Gets BIOS advanced memory protection options information. |
Get-HPBIOSAdvancedSystemROMOptions | Gets BIOS advanced system ROM options. |
Get-HPBIOSBootControllerOrder | Gets the current Boot Controller Order. |
Get-HPBIOSBootMode | Gets the current Boot Mode for the systems that support UEFI. |
Get-HPBIOSBootOrderPolicy | Gets the current Boot Order Policy in UEFI systems. |
Get-HPBIOSCustomPostMessage | Gets BIOS custom post message. |
Get-HPBIOSDataDirectIO | Gets BIOS Data Direct I/O information. |
Get-HPBIOSEmbeddedNIC | Gets BIOS Embedded NIC information. |
Get-HPBIOSEmbeddedUEFIShell | Gets BIOS embedded UEFI shell information. |
Get-HPBIOSEMSConsole | Gets the EMS console configuration. |
Get-HPBIOSHyperTransport | Gets the current HyperTransport Frequency. |
Get-HPBIOSIntelNICDMAChannels | Gets BIOS Intel DMA Channels information. |
Get-HPBIOSIntelPCM | Gets BIOS Intel Performance counter monitor information. |
Get-HPBIOSIntelTurboBoost | Gets BIOS Intel Turbo Boost information. |
Get-HPBIOSInterfaceMode | Gets the interface mode displayed for ROM-based utilities. |
Get-HPBIOSIPLOrder | Gets the current Standard Boot Order (IPL) configuration. |
Get-HPBIOSMemoryChannel | Gets BIOS memory channel mode information. |
Get-HPBIOSMemoryPower | Gets the current settings of memory related power management. |
Get-HPBIOSMemoryProximityReportingForIO | Gets BIOS Memory Proximity Reporting for I/O information. |
Get-HPBIOSModuleVersion | Gets the module details for the HPBIOSCmdlets. |
Get-HPBIOSNodeInterleaving | Gets BIOS Node Interleaving information. |
Get-HPBIOSOneTerabyteMemoryLimit | Gets BIOS One Terabyte Memory Limit information. |
Get-HPBIOSPCIePower | Gets the current PCIe related configuration, which may impact system power usage. |
Get-HPBIOSPowerCapping | Gets the current status of Memory Power Capping and Dynamic Power Capping Functionality. |
Get-HPBIOSPowerProfile | Gets the level of power versus performance for the system. |
Get-HPBIOSPowerRegulator | Gets the current HP Power Regulator. |
Get-HPBIOSPrefetcher | Gets BIOS HW prefetcher, Adjacent Sector prefetch, DCU prefetcher and DCUIP prefetcher information. |
Get-HPBIOSProcessorOptions | Gets the current settings of processor options. |
Get-HPBIOSProcessorPower | Gets the current settings of processor related power management. |
Get-HPBIOSQPI | Gets BIOS QPI snoop configuration, QPI bandwidth optimization information. |
Get-HPBIOSQPILinkPower | Gets the current Intel QPI Link Power Management and Frequency. |
Get-HPBIOSRedundantPowerSupplyMode | Gets the current redundant power supply configuration. |
Get-HPBIOSSerialConsole | Gets the serial console configuration. |
Get-HPBIOSSerialPort | Gets the serial port configuration. |
Get-HPBIOSServerAvailability | Gets BIOS server availability information. |
Get-HPBIOSServerInfo | Gets the reference information for the server administrator. |
Get-HPBIOSServerSecurity | Gets BIOS server security information. |
Get-HPBIOSServiceContact | Gets the reference information for the server service. |
Get-HPBIOSUEFIBootOrder | Gets the current advanced UEFI boot order list. |
Get-HPBIOSUEFIOptimizedBoot | Gets the current UEFI Optimized Boot configuration. |
Get-HPBIOSUtilityLanguage | Gets BIOS system utility language. |
Get-HPBIOSVideoOptions | Gets BIOS video options information. |
Get-HPBIOSVirtualization | Gets the hardware virtualization configuration. |
New-HPBIOSCustomWinPEImage | Creates HP WinPE image. |
Set-HPBIOSACPI_SLIT | Sets BIOS ACPI SLIT preferences. |
Set-HPBIOSAdminInfo | Sets the reference information for the server administrator. |
Set-HPBIOSAdvancedMemoryProtection | Sets the BIOS advanced memory protection method. |
Set-HPBIOSAdvancedSystemROMOptions | Sets BIOS system ROM options. |
Set-HPBIOSBootControllerOrder | Sets the Boot Controller Order. |
Set-HPBIOSBootMode | Sets the Boot Mode for the systems that support UEFI. |
Set-HPBIOSBootOrderPolicy | Sets the Boot Order Policy in UEFI systems. |
Set-HPBIOSCustomPostMessage | Sets a custom post message. |
Set-HPBIOSDataDirectIO | Sets BIOS Data Direct I/O. |
Set-HPBIOSEmbeddedNIC | Sets BIOS NIC setting. |
Set-HPBIOSEmbeddedUEFIShell | Sets BIOS embedded UEFI shell. |
Set-HPBIOSEMSConsole | Sets the EMS console configuration. |
Set-HPBIOSHyperTransport | Sets the HyperTransport Frequency. |
Set-HPBIOSIntelNICDMAChannels | Sets BIOS Intel DMA Channels. |
Set-HPBIOSIntelPCM | Sets BIOS Intel Performance Counter Monitor. |
Set-HPBIOSIntelTurboBoost | Sets Intel Turbo Boost. |
Set-HPBIOSInterfaceMode | Sets the interface mode displayed for ROM-based utilities. |
Set-HPBIOSIPLOrder | Sets the Standard Boot Order (IPL). |
Set-HPBIOSMemoryChannel | Sets BIOS memory channel mode. |
Set-HPBIOSMemoryPower | Sets the memory related power management. |
Set-HPBIOSMemoryProximityReportingForIO | Sets BIOS Memory Proximity Reporting for I/O information. |
Set-HPBIOSNodeInterleaving | Sets BIOS Node Interleaving. |
Set-HPBIOSOneTerabyteMemoryLimit | Sets BIOS one terabyte memory limit. |
Set-HPBIOSPCIePower | Sets the current PCIe related configuration, which may impact system power usage. |
Set-HPBIOSPowerCapping | Sets the status of Memory Power Capping and Dynamic Power Capping Functionality. |
Set-HPBIOSPowerProfile | Sets the level of power versus performance for the system. |
Set-HPBIOSPowerRegulator | Sets the HP Power Regulator. |
Set-HPBIOSPrefetcher | Sets BIOS HW, Adjacent Sector, DCU and DCUIP prefetcher. |
Set-HPBIOSProcessorOptions | Sets the current processor options settings. |
Set-HPBIOSProcessorPower | Sets the processor related power management. |
Set-HPBIOSQPI | Sets BIOS QPI snoop configuration and QPI bandwidth optimization. |
Set-HPBIOSQPILinkPower | Sets the Intel QPI Link Power Management and Frequency. |
Set-HPBIOSRedundantPowerSupplyMode | Sets the Redundant Power Supply Mode. |
Set-HPBIOSSerialConsole | Sets the serial console configuration. |
Set-HPBIOSSerialPort | Sets the serial port configuration. |
Set-HPBIOSServerAvailability | Sets BIOS server availability. |
Set-HPBIOSServerInfo | Sets the reference information for the server administrator. |
Set-HPBIOSServerSecurity | Sets BIOS server security options. |
Set-HPBIOSServiceContact | Sets the reference information for the server service. |
Set-HPBIOSUEFIOptimizedBoot | Sets the UEFI Optimized Boot state. |
Set-HPBIOSUtilityLanguage | Selects the language for the system. |
Set-HPBIOSVideoOptions | Sets BIOS video options. |
Set-HPBIOSVirtualization | Sets the hardware virtualization configuration. |
Test-HPBIOSConnection | Determines if the connection to the target is still valid. |
Update-HPBIOSModuleVersion | Determines if an updated version of the BIOS cmdlets is available and returns the link to download this new version. |