source/Private/New-GuestConfigurationPolicyConditionsSection.ps1 (73 lines of code) (raw):
function New-GuestConfigurationPolicyConditionsSection
{
[CmdletBinding()]
[OutputType([System.Collections.Specialized.OrderedDictionary])]
param
(
[Parameter(Mandatory = $true)]
[ValidateSet('Windows', 'Linux')]
[String]
$Platform,
[Parameter()]
[System.Collections.Hashtable]
$Tag,
[Parameter()]
[System.Boolean]
$IncludeVMSS = $true,
[Parameter()]
[Switch]
$ExcludeArcMachines
)
$templateFileName = "3-Images-$Platform.json"
if ($IncludeVMSS)
{
$templateFileName = "3-Images-$Platform-VMSS.json"
}
$conditionsSection = Get-GuestConfigurationPolicySectionFromTemplate -FileName $templateFileName
if ($ExcludeArcMachines)
{
$conditionsSection.anyOf = [System.Collections.ArrayList]@($conditionsSection.anyOf)
foreach ($anyOf in $conditionsSection.anyOf)
{
foreach ($allOf in $anyOf.allOf)
{
if ($allOf.value -eq "[parameters('IncludeArcMachines')]")
{
$indexToRemove = $conditionsSection.anyOf.IndexOf($anyOf)
}
}
}
if ($indexToRemove -ne -1)
{
$conditionsSection.anyOf.RemoveAt($indexToRemove)
}
}
if ($null -ne $Tag -and $Tag.Count -gt 0)
{
$tagConditionList = @()
foreach ($tagName in $Tag.Keys)
{
$tagConditionList += [Ordered]@{
field = "tags['$tagName']"
equals = $($Tag[$tagName])
}
}
if ($tagConditionList.Count -eq 1)
{
$tagConditions = $tagConditionList[0]
}
elseif ($tagConditionList.Count -gt 1)
{
$tagConditions = [Ordered]@{
allOf = $tagConditionList
}
}
$conditionsSection = [Ordered]@{
allOf = @(
$conditionsSection,
$tagConditions
)
}
}
return $conditionsSection
}