DscResources/AuditPolicies/AuditPolicies.schema.psm1

# see https://github.com/dsccommunity/AuditPolicyDsc
configuration AuditPolicies
{
    param
    (
        [Parameter()]
        [hashtable[]]
        $Options,

        [Parameter()]
        [hashtable[]]
        $Subcategories,

        [Parameter()]
        [hashtable[]]
        $Guids,

        [Parameter()]
        [String]
        $CsvPath
    )

    Import-DscResource -ModuleName PSDesiredStateConfiguration
    Import-DscResource -ModuleName AuditPolicyDsc

    if( $null -ne $Options )
    {
        foreach( $option in $Options )
        {
            $executionName = "auditPolOpt_" + ($option.Name -replace '\(|\)|\.|:| ', '')
            (Get-DscSplattedResource -ResourceName AuditPolicyOption -ExecutionName $executionName -Properties $option -NoInvoke).Invoke( $option )
        }
    }
    
    if( $null -ne $Subcategories )
    {
        foreach( $subcat in $Subcategories )
        {
            $executionName = "auditPolSubcat_" + ($subcat.Name -replace '\(|\)|\.|:| ', '') + "_" + ($subcat.AuditFlag -replace '\(|\)|\.|:| ', '')
            (Get-DscSplattedResource -ResourceName AuditPolicySubcategory -ExecutionName $executionName -Properties $subcat -NoInvoke).Invoke( $subcat )
        }
    }

    if( $null -ne $Guids )
    {
        foreach( $guid in $Guids )
        {
            $executionName = "auditPolGuid_" + ($guid.Name -replace '\(|\)|\.|:| ', '') + "_" + ($guid.AuditFlag -replace '\(|\)|\.|:| ', '')
            (Get-DscSplattedResource -ResourceName AuditPolicySubcategory -ExecutionName $executionName -Properties $guid -NoInvoke).Invoke( $guid )
        }
    }

    if( -not [String]::IsNullOrWhiteSpace($CsvPath) )
    {
        $auditPolicyCsv = @{
            CsvPath          = $CsvPath
            IsSingleInstance = 'Yes'
        }
        (Get-DscSplattedResource -ResourceName AuditPolicyCsv -ExecutionName "auditPolicyCsv" -Properties $auditPolicyCsv -NoInvoke).Invoke( $auditPolicyCsv )
    }
}