Validate-ESXiPackages.psm1
function Validate-ESXiPackages { <# .DESCRIPTION Compares all ESXi Host VIBs within a vSphere with a reference Hosts. .NOTES File Name : Validate-ESXiPackages.ps1 Author : Markus Kraus Version : 1.0 State : Ready Tested Against Environment: vSphere Version: 6.0 U2, 6.5 U1 PowerCLI Version: PowerCLI 10.0.0 build 7895300 PowerShell Version: 4.0 OS Version: Windows Server 2012 R2 .LINK https://mycloudrevolution.com/ .EXAMPLE Validate-ESXiPackages -Cluster (Get-Cluster) -RefernceHost (Get-VMHost | Select-Object -First 1) .PARAMETER Cluster vSphere Cluster to verify .PARAMETER RefernceHost The VIB Reference ESXi Host #> [CmdletBinding()] param( [Parameter(Mandatory=$True, ValueFromPipeline=$True, HelpMessage="vSphere Cluster to verify")] [ValidateNotNullorEmpty()] [VMware.VimAutomation.ViCore.Impl.V1.Inventory.ComputeResourceImpl] $Cluster, [Parameter(Mandatory=$True, ValueFromPipeline=$false, HelpMessage="The VIB Reference ESXi Host")] [ValidateNotNullorEmpty()] [VMware.VimAutomation.ViCore.Impl.V1.Inventory.InventoryItemImpl] $RefernceHost ) Process { #region: Get reference VIBs $EsxCli2 = Get-ESXCLI -VMHost $RefernceHost -V2 $RefernceVibList = $esxcli2.software.vib.list.invoke() #endregion #region: Compare reference VIBs $MyView = @() foreach ($VmHost in ($Cluster | Get-VMHost)) { $EsxCli2 = Get-ESXCLI -VMHost $VmHost -V2 $VibList = $esxcli2.software.vib.list.invoke() [Array]$VibDiff = Compare-Object -ReferenceObject $RefernceVibList.ID -DifferenceObject $VibList.ID if($VibDiff.Count -gt 0) { $VibDiffSideIndicator = @() foreach ($Item in $VibDiff) { $VibDiffSideIndicator += $($Item.SideIndicator + " " + $Item.InputObject) } } else { $VibDiffSideIndicator = $null } $Report = [PSCustomObject] @{ Host = $VmHost.Name Version = $VmHost.Version Build = $VmHost.Build VibDiffCount = $VibDiff.Count VibDiff = $VibDiff.InputObject VibDiffSideIndicator = $VibDiffSideIndicator } $MyView += $Report } #region: Compare reference VIBs $MyView } } |