ScriptsToProcess/Get-DscSplattedResource.ps1

function Global:Get-DscSplattedResource {
    [CmdletBinding()]
    Param(
        [String]
        $ResourceName,

        [String]
        $ExecutionName,

        [hashtable]
        $Properties,

        [switch]
        $NoInvoke
    )
    # Remove Case Sensitivity of ordered Dictionary or Hashtables
    $Properties = @{}+$Properties

    $stringBuilder = [System.Text.StringBuilder]::new()
    $null = $stringBuilder.AppendLine("Param([hashtable]`$Parameters)")
    $null = $stringBuilder.AppendLine()
    $null = $stringBuilder.AppendLine(' if ($Parameters) {')
    $null = $stringBuilder.AppendLine(' $($Parameters=@{}+$Parameters)')
    $null = $stringBuilder.AppendLine(' }') 
    $null = $stringBuilder.AppendLine(" $ResourceName $ExecutionName { ")
    foreach($PropertyName in $Properties.keys) {
        $null = $stringBuilder.AppendLine("$PropertyName = `$(`$Parameters['$PropertyName'])")
    }
    $null = $stringBuilder.AppendLine("}")
    Write-Debug ("Generated Resource Block = {0}" -f $stringBuilder.ToString())

    if($NoInvoke.IsPresent) {
        [scriptblock]::Create($stringBuilder.ToString())
    }
    else {
        if ($Properties) {
            [scriptblock]::Create($stringBuilder.ToString()).Invoke($Properties)
        } else {
            [scriptblock]::Create($stringBuilder.ToString()).Invoke()
        }
    }
}
Set-Alias -Name x -Value Get-DscSplattedResource -scope Global
#Export-ModuleMember -Alias x