Functions/Public/Get-CDBSubclassSchema.ps1

using namespace System.Management.Automation

#These classes are a necessary workaround to use variables as validate sets. Hopefully Microsoft bakes this in someday.
class ValidSubClassGenerator : IValidateSetValuesGenerator {
    [string[]] GetValidValues() {
        return ($Script:SubClassURIs).Keys
    }
}

<#
.Synopsis
   Returns the schema for the given CDB subclass. This is a listing of the properties and their data types. Useful for crafting filters for Get-CDBItem.
.DESCRIPTION
   Returns the schema for the given CDB subclass. This is a listing of the properties and their data types. Useful for crafting filters for Get-CDBItem.
.PARAMETER SubClass
    The specific type of item. Ex: building, network, service, etc.
    Tab completion is supported.
.EXAMPLE
   Get-CDBSubclassSchema -SubClass system
#>

function Get-CDBSubclassSchema {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory=$true)]
        [ValidateSet( [ValidSubClassGenerator] )]
        [String]$SubClass
    )

    begin {

    }

    process {
        $Schema = (Invoke-CDBRestCall -RelativeURI $Script:SubClassURIs[$SubClass].schema).fields
        $Schema | Add-Member -Name 'Subclass' -MemberType NoteProperty -Value $SubClass
        $Schema
    }

    end {

    }
}