The Switch block was incorrect, try like this (to see if it discovers the differences).
$clusterName = Read-Host -Prompt 'Cluster name:'
$cluster = Get-Cluster -Name $clusterName
$esx = Get-VMHost -Location $cluster
$i = 1
$esx | %{
Write-Host "$($i): $($_.Name)"
$i++
}
$esxRefNr = Read-Host -Prompt "Select Reference host (1-$($esx.Count))"
$refEsx = $esx[$esxRefNr-1]
$esxcli = Get-Esxcli -VMHost $refEsx
$refArray = $esxcli.software.vib.list()
$report = foreach($vmhost in ($esx | where{$_.Name -ne $refEsx.Name})){
$esxcli = Get-EsxCli -VMHost $vmhost
$swArray = $esxcli.software.vib.list()
Compare-Object -ReferenceObject $refArray -DifferenceObject $swArray -IncludeEqual -Property Name,CreationDate,Vendor,Version |
Select Name,Version,InstallDate,Vendor,@{N='Cluster';E={$clusterName}},
@{N='RefEsx';E={$refEsx.Name}},
@{N='Esx';E={$vmhost.Name}},
@{N='Vib';E={$_.InputObject.Name}},
@{N='VibVersion';E={$_.InputObject.Version}},
@{N='VibInstallDate';E={$_.InputObject.InstallDate}},
@{N='Result';E={
switch($_.SideIndicator){
'==' {'Equal'}
Default {'Different'}
}
}}
}
$report | ft -AutoSize