Parsers/ASC/SystemAccess.ps1

Function Write-ASCSystemAccessJSONData
{
    [CmdletBinding()]
    [OutputType([String])]
    param
    (
        [Parameter(Mandatory = $true)]
        $SystemAccessData
    )

    $SysemAccess = $SystemAccessData.SettingName

    if($SecuritySettings.contains($SysemAccess))
    {

        if ($AccountPolicySettings.ContainsKey($SysemAccess))
        {
            $Type = "AccountPolicy"
            $internalSettingName =  $AccountPolicySettings[$SysemAccess]
        }
        else
        {
            $Type = "SecurityOption"
            $internalSettingName =  $SecurityOptionSettings[$SysemAccess]
        }

        $policyHash = @{}
        $policyHash.Name = $SysemAccess

        $ValueData = $SystemAccessData.ExpectedValue
        if ($internalSettingName -in $SecuritySettingsWEnabledDisabled -and ($ValueData -notmatch "enabled|disabled"))
        {
            [string]$ValueData = $EnabledDisabled[([int]$ValueData)]
        }

        If ($SystemAccessData.analyzeOperation -eq "RANGE")
        {
            $ValueData = $SystemAccessData.ExpectedValue.Split(',')[-1]
        }

        $policyHash.$($internalSettingName) = $ValueData
    }
    else
    {
        Write-Error "Cannot find Account Policy $SysemAccess"
        return ""
    }



    return Write-DSCString -Resource -Name "$($SystemAccessData.CCEID): $($SystemAccessData.ruleName)" -Type $Type -Parameters $policyHash -CommentOUT:($SystemAccessData.State -ne 'Enabled') -DoubleQuoted

}