DSCResources/SharePointManagedAccounts/SharePointManagedAccounts.schema.psm1

configuration SharePointManagedAccounts
{
    param(
        [hashtable[]]
        $ManagedAccounts
    )

<#
    AccountName = [string]
    [Account = [PSCredential]]
    [DependsOn = [string[]]]
    [EmailNotification = [UInt32]]
    [Ensure = [string]{ Absent | Present }]
    [InstallAccount = [PSCredential]]
    [PreExpireDays = [UInt32]]
    [PsDscRunAsCredential = [PSCredential]]
    [Schedule = [string]]
#>


    Import-DscResource -ModuleName PSDesiredStateConfiguration
    Import-DscResource -ModuleName SharePointDSC

    foreach ($item in $ManagedAccounts)
    {
        if (-not $item.ContainsKey('Ensure')) {
            $item.Ensure = 'Present'
        }

        $executionName = $item.AccountName
        (Get-DscSplattedResource -ResourceName SPManagedAccount -ExecutionName $executionName -Properties $item -NoInvoke).Invoke($item)
    }
}