Powershell – looking up HP warranty information

Today I wanted to get an overview of the warranty information of our ESX hosts. All the hosts are added to a HP Insight Remote Support server so the warranty information is available. However, using this information from powershell is a bit more challenging.

Fortunately I found a powershell module named HPWarranty. Could this be the solution?

First, install the PowerShellGet module. Details about the installation can be found here. Personally, I installed the MSI installer.

Second, start a new Powershell session and type Install-Module -Name HPWarranty. You will get a warning to install the NuGet provider 2.8.5.201. Select Yes. The installation will pull some files from an untrusted repository so you will get a second warning about that. I selected Yes. The module is now installed.

To try it out I entered the following command:
Get-HPEntWarrantyEntitlement -ProductNumber 654081-B21 -SerialNumber CZ3434BB9K

For some reason it asked me for credentials but after escaping out I got this output:

So the next question might be: how can I retrieve the product number and serial number? For this I wrote a powershell function that utilizes anonymous access to iLO:

Function Get-HPWarrantyInfo {

<# .SYNOPSIS Get HP warranty information from server .DESCRIPTION Use this script if you need to get warranty information .PARAMETER ComputerName Remote server name .EXAMPLE .\Get-HPWarrantyInfo.ps1 -ComputerName server1 Get the warranty information of the server server1 .NOTES Script name: Get-HPWarrantyInfo.ps1 Author: Jeroen Buren DateCreated: 08-05-2017 #>

[CmdletBinding(SupportsShouldProcess=$true)]

param(
    [parameter(ValueFromPipeLine=$True,ValueFromPipeLineByPropertyName=$True)]
    [string[]]$ComputerName = $env:COMPUTERNAME
)

Begin {
    $ErrorActionPreference = 'SilentlyContinue'
    $ComputerCount = $ComputerName.Count
}

Process {
    $outputobject = @()
    Foreach ($Computer in $ComputerName) {
        $ProgressCount++
        Write-Progress -Activity "Getting warranty information..." -Id 1 -Status "$($ProgressCount) / $($ComputerCount)" -CurrentOperation "$Computer" -PercentComplete (($ProgressCount / $ComputerCount) * 100)
        If (Test-Connection -ComputerName $Computer -Count 1 -Quiet) {
            $XML = New-Object XML
            #Retrieving iLO hardware information
            $XML.Load("http://$Computer/xmldata?item=All")
            If ($?) {
                $object = New-Object PSObject -Property @{
                    Computername = $Computer
                    SerialNumber = $($XML.RIMP.HSI.SBSN)
                    ProductName = $($XML.RIMP.HSI.SPN)
                    SKU = $($XML.RIMP.HSI.PRODUCTID) -replace " ",""
                    WarrantyEndDate = $(Get-HPEntWarrantyEntitlement -ProductNumber $($XML.RIMP.HSI.PRODUCTID) -SerialNumber $($XML.RIMP.HSI.SBSN)).OverallEntitlementEndDate
                }
                $outputobject += $object
            }
        }
    }
    $outputobject.pstypenames.insert(0,'Hardware.Info')
    $outputobject | ft
}
}

The script is inspired from this page.

Leave a Reply

Your email address will not be published. Required fields are marked *