Public/Add-PsdDefault.ps1

function Add-PsdDefault {
    <#
    .SYNOPSIS
    Fills in the schema's Default values for keys that are missing. Changes the object in place.

    .EXAMPLE
    Add-PsdDefault $config -Schema ./app.schema.psd1
    #>

    [CmdletBinding()]
    param(
        [Parameter(Mandatory, Position = 0)]
        [System.Collections.IDictionary] $InputObject,

        [Parameter(Mandatory)]
        [string] $Schema,

        [switch] $PassThru
    )
    $ctx = New-PsdContext
    $rules = Import-PsdSchemaRules (Resolve-PsdUserPath $Schema) $ctx $null
    if ($rules) { Add-PsdDefaultValues $InputObject $rules }
    Write-PsdResult $PSCmdlet $ctx $null
    if ($PassThru) { $InputObject }
}