- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Glad it was helpful. ![]()
Here's a quick and dirty PowerCLI snippet I wrote to save me the clicks. It certainly has room for improvement so feel free to use it.
function Get-VMHostProfileComplianceVerbose {
param(
[Parameter(Mandatory=$true)][VMware.VimAutomation.ViCore.Impl.V1.Inventory.VMHostImpl]$VMHost,
[VMware.VimAutomation.ViCore.Types.V1.Host.Profile.VMHostProfile]$HostProfile
)
# Execute the compliance task.
try {
$Task = $HostProfile.ExtensionData.CheckProfileCompliance_Task($VMHost.ExtensionData.MoRef)
$TaskObject = Get-VIObjectByVIView -MORef $Task
Wait-Task -Task (Get-Task -Id $TaskObject.Id)
$Results = $TaskObject.ExtensionData.Info.Result
} catch {
Write-Information -MessageData "There was an error running the compliance task: $($Error[0].Exception)" -InformationAction Continue
break
}
$Output = @()
# Check if it's compliant or not.
if($Results.Count -eq 1 -and $Results[0].ComplianceStatus -eq "compliant") {
Write-Information -MessageData "This Host is compliant." -InformationAction Continue
break
} else {
$Failures = $Results[0].Failure
foreach($Failure in $Failures) {
# Check for the failures and make them more readable!
$Type = $Failure.FailureType.split(".")[$Failure.FailureType.split(".").count-1]
$Message = $Failure.Message.Message
$Output += "Compliance Failure Type: $Type, Message: $Message"
}
}
return $Output
}