DSCResources/POSHOrigin_vSphere_VM/Helpers/_testTags.ps1
function _TestTags { [cmdletbinding()] param( [Parameter(Mandatory)] [ValidateNotNull()] $vm, [Parameter(Mandatory)] [ValidateNotNull()] [string]$Tags ) $result = $true # Get tag information from vCenter $desiredTags = $Tags | ConvertFrom-Json $tagAssignments = $vm | Get-TagAssignment -Verbose:$false # Verify that each desired tag in configuration is applied in vCenter. Apply if necessary foreach ($desiredTag in $desiredTags) { $match = $tagAssignments | Where-Object {($_.Tag.Category.Name -eq $desiredTag.Category) -and ($_.Tag.Name -eq $desiredTag.Name)} if (-not $match) { Write-Verbose -Message "Tag [$($desiredTag.Category)/$($desiredTag.Name)] not set" $result = $false } } # Remove any tag assignments in vCenter that are NOT in the desired tag list foreach ($tagAssignment in $tagAssignments) { $match = $desiredTags | Where-Object {($_.Category -eq $tagAssignment.Tag.Category.Name) -and ($_.Name -eq $tagAssignment.Tag.Name)} if (-not $match ) { Write-Verbose -Message "Tag [$($tagAssignment.Tag.Category.Name)/$($tagAssignment.Tag.Name)] should be removed" $result = $false } } return $result } |