Src/Private/Get-AbrVSphereClusterVUM.ps1
|
<#
.SYNOPSIS Private function to report vSphere cluster Update Manager baselines and compliance. .DESCRIPTION Generates a PScriboDocument section detailing the VMware Update Manager baselines and compliance status for a given cluster. .NOTES Version: 2.0.0 Author: Tim Carman Twitter: @tpcarman Github: tpcarman .INPUTS None. Uses variables from the parent scope: $Cluster, $InfoLevel, $Report, $Healthcheck, $UserPrivileges, $VumServer, $vCenter, $VUMConnection, $reportTranslate .OUTPUTS None. Writes PScriboDocument content directly. #> function Get-AbrVSphereClusterVUM { [CmdletBinding()] param () begin { $LocalizedData = $reportTranslate.GetAbrVSphereClusterVUM } process { Try { #region Cluster VUM Baselines if ($UserPrivileges -contains 'VcIntegrity.Updates.com.vmware.vcIntegrity.ViewStatus') { if ($VUMConnection) { Try { $ClusterPatchBaselines = $Cluster | Get-PatchBaseline -ErrorAction Stop } Catch { Write-PScriboMessage -Message $LocalizedData.VUMBaselineNotAvailable } if ($ClusterPatchBaselines) { Section -Style Heading3 $LocalizedData.UpdateManagerBaselines { $ClusterBaselines = foreach ($ClusterBaseline in $ClusterPatchBaselines) { [PSCustomObject]@{ $LocalizedData.Baseline = $ClusterBaseline.Name $LocalizedData.Description = $ClusterBaseline.Description $LocalizedData.Type = $ClusterBaseline.BaselineType $LocalizedData.TargetType = $ClusterBaseline.TargetType $LocalizedData.LastUpdate = ($ClusterBaseline.LastUpdateTime).ToLocalTime().ToString() $LocalizedData.NumPatches = $ClusterBaseline.CurrentPatches.Count } } $TableParams = @{ Name = ($LocalizedData.TableVUMBaselines -f $Cluster) ColumnWidths = 25, 25, 10, 10, 20, 10 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $ClusterBaselines | Sort-Object $LocalizedData.Baseline | Table @TableParams } } if ($Healthcheck.Cluster.VUMCompliance) { $ClusterComplianceInfo | Where-Object { $_.$($LocalizedData.Status) -eq $LocalizedData.Unknown } | Set-Style -Style Warning $ClusterComplianceInfo | Where-Object { $_.$($LocalizedData.Status) -eq $LocalizedData.NotCompliant -or $_.$($LocalizedData.Status) -eq $LocalizedData.Incompatible } | Set-Style -Style Critical } $TableParams = @{ Name = ($LocalizedData.TableVUMCompliance -f $Cluster) ColumnWidths = 25, 50, 25 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $ClusterComplianceInfo | Sort-Object $LocalizedData.Entity, $LocalizedData.BaselineInfo | Table @TableParams } } else { Write-PScriboMessage -Message $LocalizedData.VUMPrivilegeMsgBaselines } #endregion Cluster VUM Baselines #region Cluster VUM Compliance (Advanced Detail Information) if ($UserPrivileges -contains 'VcIntegrity.Updates.com.vmware.vcIntegrity.ViewStatus') { if ($InfoLevel.Cluster -ge 4 -and $VumServer.Name) { Try { $ClusterCompliances = $Cluster | Get-Compliance -ErrorAction SilentlyContinue } Catch { Write-PScriboMessage -Message $LocalizedData.VUMComplianceNotAvailable } if ($ClusterCompliances) { Section -Style Heading4 $LocalizedData.UpdateManagerCompliance { $ClusterComplianceInfo = foreach ($ClusterCompliance in $ClusterCompliances) { [PSCustomObject]@{ $LocalizedData.Entity = $ClusterCompliance.Entity.Name $LocalizedData.BaselineInfo = $ClusterCompliance.Baseline.Name $LocalizedData.Status = Switch ($ClusterCompliance.Status) { 'NotCompliant' { $LocalizedData.NotCompliant } default { $ClusterCompliance.Status } } } } if ($Healthcheck.Cluster.VUMCompliance) { $ClusterComplianceInfo | Where-Object { $_.$($LocalizedData.Status) -eq $LocalizedData.Unknown } | Set-Style -Style Warning $ClusterComplianceInfo | Where-Object { $_.$($LocalizedData.Status) -eq $LocalizedData.NotCompliant -or $_.$($LocalizedData.Status) -eq $LocalizedData.Incompatible } | Set-Style -Style Critical } $TableParams = @{ Name = ($LocalizedData.TableVUMCompliance -f $Cluster) ColumnWidths = 25, 50, 25 } if ($Report.ShowTableCaptions) { $TableParams['Caption'] = "- $($TableParams.Name)" } $ClusterComplianceInfo | Sort-Object $LocalizedData.Entity, $LocalizedData.BaselineInfo | Table @TableParams } } } } else { Write-PScriboMessage -Message $LocalizedData.VUMPrivilegeMsgCompliance } #endregion Cluster VUM Compliance (Advanced Detail Information) } Catch { Write-PScriboMessage -IsWarning $($_.Exception.Message) } } end {} } |