Hardware.SystemInfo.OtherIdentifyingInfo Blank in PowerCLI

Summary:
Using my PowerCLI script to get Dell warranty information, I noticed that some of my ESX hosts were not returning service/asset tag information.  The information was showing up in vCenter's hardware status tab, but not w/ my PowerCLI script.
Workaround:
  1. First, check to see if your ESX host has this information populated:
    • Connect-viServer ESXHostName
      $VMHost = Get-VMHost | Get-View
      $VMHost.Hardware.SystemInfo.OtherIdentifyingInfo

  2. If the above code returns objects, then the next step is to disconnect the host from vCenter, then reconnect it.  You can use the following PowerCLI code to find all hosts w/ empty properties to do this for you.  As always, test before you try it in a production environment.

    • $ESXHosts = @()
       
      $VMHosts = Get-VMHost | Get-View
      Foreach ($VMHost in $VMHosts)
      {
      $NewObj             = "" | Select Name, ServiceTag, AssetTag
      $NewObj.Name        = $VMHost.Name
      #Replace is used to clean up data that might be there for easier filtering
      $NewObj.ServiceTag    = ($VMHost.hardware.systeminfo.OtherIdentifyingInfo | where {$_.IdentifierType.Key -eq "servicetag"}).identifierValue -replace(" ","")
      $NewObj.AssetTag    = ($VMHost.hardware.systeminfo.OtherIdentifyingInfo | where {$_.IdentifierType.Key -eq "assettag"}).identifierValue -replace(" ","")
      $ESXHosts += $NewObj
      }
       
      $VMHostsFiltered = $ESXHosts | Where-Object {($_.ServiceTag -eq "" -or $_.AssetTag -eq "") -and ($_.ServiceTag -ne "unknown") -and ($_.AssetTag -ne "unknown")}
       
      Foreach ($EvilESXBox in $VMHostsFiltered)
      {
      Set-VMHost -VMHost $EvilESXBox.Name -State Disconnected
      Set-VMHost -VMHost $EvilESXBox.Name -State Connected
      }

  3. Now running the code in my Dell Warranty Script should have all information populated as long as the ESX host has the information.
FYI:  
If the assettag and servicetag fields are blank or unknown, it's likely that your server needs to be flashed by a Dell Technician to insert the service tag info.  It supposed to be pre-populated by the factory, but if you've had the motherboard replaced, then it needs to be flashed.

Get ESX Host Warranty Info for Dell Servers

[Update: This code has been updated since it appears the 'OtherIdentifyingInfo' property seems to have problem coming through to vCenter.  Click here to see updated code]

Summary:
Needed to get my ESX host warranty info since we haven’t completely deployed our Dell vCenter Plugin.  Here is the code, w/ the Dell Warranty grab code from Marcus Oh.  It’ll get you some additional info too.  You can always edit and remove what you don’t need.
Code:
$ESXServers = Get-VMHost
$ESXServerView = $ESXServers | Get-View
$ESXInfo = @()
 
$oWeb = New-Object System.Net.WebClient
 
Foreach ($ESX in $ESXServers){
$TargetESXServerView = $ESXServerView | where {$_.MoRef -eq $ESX.Id}
$NewObj         = "" | Select Cluster, Name, Model, Version, BIOs, ServiceTag, AssetTag, ShipDate, ExpiryDate
$NewObj.Cluster = $ESX.Parent.Name
$NewObj.Name    = $ESX.Name
$NewObj.Model    = $ESX.Model
$NewObj.Version    = $ESX.Version
$NewObj.BIOs    = (($TargetESXServerView.Runtime.HealthSystemRuntime.SystemHealthInfo.NumericSensorInfo | where {$_.Name -like "*BIOS*"  -and $_.SensorType -eq "Software Components"}).Name) -replace(".* BIOS ","") -replace(" .*","")
$NewObj.ServiceTag     = ($TargetESXServerView.hardware.systeminfo.OtherIdentifyingInfo | where {$_.IdentifierType.Key -eq "servicetag"}).identifierValue -replace(" ","")
$NewObj.AssetTag    = ($TargetESXServerView.hardware.systeminfo.OtherIdentifyingInfo | where {$_.IdentifierType.Key -eq "assettag"}).identifierValue -replace(" ","")
## Gets ServiceTag Info from Dell
#$oWeb = New-Object System.Net.WebClient
$ServiceTag = $null
If ($NewObj.ServiceTag -eq $null -or $NewObj.ServiceTag -eq "unknown" -or $NewObj.ServiceTag -eq "") {$ServiceTag = $NewObj.AssetTag} Else {$ServiceTag = $NewObj.ServiceTag}
$sUrl = "http://support.dell.com/support/topics/global.aspx/support/my_systems_info/details?c=us&l=en&s=gen&~ck=anavml&servicetag=$($ServiceTag)"
$sData = $oWeb.DownloadString($sUrl)
#get just the dates from the dell site.
$oRegEx = [regex]'\d{1,2}/\d{1,2}/\d{4}'
$cMatches = $oRegEx.Matches($sData)
#convert to a date object
$test = @()
foreach ($a in $cMatches){$Test += ([datetime]$a.Value)}
#Sort by the year
$datedata = $test | Sort-Object year
#Grab the earliest date for Shipdate
$ShipDate = ($Datedata[0]).toshortdatestring()
#Find the last object in the array
$cDates = ($Datedata.count) - 1
#Grab the latest date from the array for the warranty end date
$EndDate = ($Datedata[$cDates]).toshortdatestring()
## End Dell Site Code
$NewObj.ShipDate    = $ShipDate
$NewObj.ExpiryDate     = $EndDate
 
$ESXInfo += $NewObj
$ShipDate = $null
$EndDate = $null
}
$ESXInfo


If info is missing check this post.

ESX/ESXi Recommended BIOs Settings

Summary:

Came across a PSOD on one my lab manager hosts.  The error read:

LINT1 motherboard interrupt.  This is a hardware problem; please contact your hardware vendor

PSOD

Resolution:

According to Dell, this occurs because the C1E setting is enabled in the BIOs.  This post helped me from EnterpriseAdmins.org.

Finally, it’s mentioned in Page 15 of the vSphere 4.0 Best Practices Guide for recommended hardware BIOs settings.  Guess I need to work w/ Dell to do this for me before sending me an ESX Server.

NFS Datastore appears inactive in vCenter

Summary:

This was more of an annoyance for me, but essentially I had two NFS datastores that were mapped incorrectly to some ESX hosts.  Those datastores were unmounted and remounted w/ correct pathing using PowerCLI.  However, one host ‘seemed’ to hold onto the incorrectly mapped one.  This was only reflected in vCenter, not the host itself.

Experience:

  • vCenter 4.1
  • ESX 4.0 U2

Symptoms:

  • When attempting to unmount the following error appears:
    • The object has been deleted or has not been completely created
  • Connecting directly to the ESX host does not show these ‘inactive’ nfs datastores.
  • esxcfg-nas –l within TSM/SC on the ESX host does not show these ‘inactive’ datastores.

Resolution:

  1. Disconnect ESX host from vCenter
  2. Connect ESX host to vCenter.

This seems to help vCenter resolve the display issue.  For help on similar NFS issues, this search seemed helpful.

EMC Virtual Storage Integrator (VSI 4.1)

Summary:
Upgrading to VSI 4.1 is fairly painless if you followed my last post on 3.0.1.  You still have to do a couple things for it to work though.

PreReq:

  • VSI Installed on server system.
  • Reference last post for install instructions.  Overall same process.
  • Downloaded VSI Storage Viewer Plug-in 4.1 
  • Record IP's, username's, and passwords of your array connections.


Details:

  1. Upgrade the version on your server and upgrade the version on your system.
  2. Follow step 1 on my last post on the server.  (This is so your local system can connect to the server's solutions enabler service.)
  3. Once done, vCenter should show the new EMC VSI icon under 'Solutions and Applications'
Other Optional Components:
There are additional plug-ins that can be installed to allow self-service operations among other things:
  1. VSI Unified Storage Management
    • NaviSphere CLI required for block provisioning
    • UniSphere CLI required for VNXe provisioning
  2. VSI Storage Pool Management
  3. VSI Symmetrix SRA Utilities
    • This works in conjunction w/ VMWare SRM.
  4. VSI Path Management