Public/Test-PsdSchema.ps1

function Test-PsdSchema {
    <#
    .SYNOPSIS
    Checks an object already in memory against a schema. Returns $true or $false.

    .DESCRIPTION
    Use Get-PsdError -InputObject ... -Schema ... to see what's wrong.

    .EXAMPLE
    Test-PsdSchema $config -Schema ./app.schema.psd1
    #>

    [CmdletBinding()]
    [OutputType([bool])]
    param(
        [Parameter(Mandatory, Position = 0, ValueFromPipeline)]
        [object] $InputObject,

        [Parameter(Mandatory)]
        [string] $Schema
    )
    process {
        $ctx = New-PsdContext
        $rules = Import-PsdSchemaRules (Resolve-PsdUserPath $Schema) $ctx $null
        if ($rules) { Test-PsdValueRule (Copy-PsdPlain $InputObject) $null $rules '' $ctx $null }
        $ctx.Errors.Count -eq 0
    }
}