source/Private/New-GuestConfigurationPolicyContent.ps1 (97 lines of code) (raw):
function New-GuestConfigurationPolicyContent
{
[CmdletBinding()]
[OutputType([System.Collections.Specialized.OrderedDictionary])]
param
(
[Parameter(Mandatory = $true)]
[String]
$DisplayName,
[Parameter(Mandatory = $true)]
[String]
$Description,
[Parameter(Mandatory = $true)]
[String]
$PolicyVersion,
[Parameter(Mandatory = $true)]
[String]
$ConfigurationName,
[Parameter(Mandatory = $true)]
[String]
$ConfigurationVersion,
[Parameter(Mandatory = $true)]
[String]
$ContentUri,
[Parameter()]
[String]
$ManagedIdentityResourceId,
[Parameter(Mandatory = $true)]
[String]
$ContentHash,
[Parameter(Mandatory = $true)]
[ValidateSet('Windows', 'Linux')]
[String]
$Platform,
[Parameter(Mandatory = $true)]
[ValidateSet('Audit', 'ApplyAndMonitor', 'ApplyAndAutoCorrect')]
[String]
$AssignmentType,
[Parameter(Mandatory = $true)]
[ValidateNotNull()]
[String]
$PolicyId,
[Parameter()]
[Hashtable[]]
$Parameter,
[Parameter()]
[Hashtable]
$Tag,
[Parameter()]
[System.Boolean]
$IncludeVMSS = $true,
[Parameter()]
[Switch]
$ExcludeArcMachines
)
$metadataSectionParameters = @{
DisplayName = $DisplayName
Description = $Description
PolicyVersion = $PolicyVersion
ConfigurationName = $ConfigurationName
ConfigurationVersion = $ConfigurationVersion
ContentUri = $ContentUri
ContentHash = $ContentHash
Parameter = $Parameter
}
if (-not [string]::IsNullOrWhiteSpace($ManagedIdentityResourceId))
{
$metadataSectionParameters.ManagedIdentityResourceId = $ManagedIdentityResourceId
}
$metadataSection = New-GuestConfigurationPolicyMetadataSection @metadataSectionParameters
$parametersSection = New-GuestConfigurationPolicyParametersSection -Parameter $Parameter -ExcludeArcMachines:$ExcludeArcMachines
$conditionsSection = New-GuestConfigurationPolicyConditionsSection -Platform $Platform -Tag $Tag -IncludeVMSS $IncludeVMSS -ExcludeArcMachines:$ExcludeArcMachines
$actionSectionParameters = @{
ConfigurationName = $ConfigurationName
ConfigurationVersion = $ConfigurationVersion
ContentUri = $ContentUri
ContentHash = $ContentHash
AssignmentType = $AssignmentType
Parameter = $Parameter
IncludeVMSS = $IncludeVMSS
}
if (-not [string]::IsNullOrWhiteSpace($ManagedIdentityResourceId))
{
$actionSectionParameters.ManagedIdentityResourceId = $ManagedIdentityResourceId
}
$actionSection = New-GuestConfigurationPolicyActionSection @actionSectionParameters -ExcludeArcMachines:$ExcludeArcMachines
$policyDefinitionContent = [Ordered]@{
properties = $metadataSection + $parametersSection + [Ordered]@{
policyRule = [Ordered]@{
if = $conditionsSection
then = $actionSection
}
}
name = $PolicyId
}
return $policyDefinitionContent
}