DSCResources/Resources/SqlServer.ScriptQuery.ps1

# Copyright (c) Microsoft Corporation. All rights reserved.
# Licensed under the MIT License.

$rules = $stig.RuleList | Select-Rule -Type SqlScriptQueryRule

foreach ($instance in $ServerInstance)
{
    if ($instance -notmatch '\\')
    {
        $instanceName = 'MSSQLSERVER'
        $serverName   = $instance
    } 
    else
    {
        $instanceName = $instance.Split('{\}')[1]
        $serverName   = $instance.Split('{\}')[0]
    }

    if ($null -ne $Database)
    {
        foreach ($db in $Database)
        {
            $getScript = '{0} --{1}' -f $rule.GetScript, $db

            foreach ($rule in $rules)
            {
                $resourceTitle = '{0}{1}_{2}' -f (Get-ResourceTitle -Rule $rule), $instanceName, $db
                SqlScriptQuery "$resourceTitle"
                {
                    ServerName     = $serverName
                    InstanceName   = $instanceName
                    GetQuery       = $getScript
                    TestQuery      = $rule.TestScript
                    SetQuery       = $rule.SetScript
                    Variable       = Format-SqlScriptVariable -Database $db -Variable $($rule.Variable) -VariableValue $($rule.VariableValue)
                }
            }
        }
    }
    else
    {
        foreach ($rule in $rules)
        {
            if ($null -ne $rule.Variable -and $null -ne $rule.VariableValue)
            {
                SqlScriptQuery "$(Get-ResourceTitle -Rule $rule)$instanceName"
                {
                    ServerName     = $serverName
                    InstanceName   = $instanceName
                    GetQuery       = $rule.GetScript
                    TestQuery      = $rule.TestScript
                    SetQuery       = $rule.SetScript
                    Variable       = Format-SqlScriptVariable -Variable $($rule.Variable) -VariableValue $($rule.VariableValue)
                }
                continue
            }

            SqlScriptQuery "$(Get-ResourceTitle -Rule $rule)$instanceName"
            {
                ServerName     = $serverName
                InstanceName   = $instanceName
                GetQuery       = $rule.GetScript
                TestQuery      = $rule.TestScript
                SetQuery       = $rule.SetScript
            }
        }
    }
}