Private/Test-JVData.ps1

function Test-JVData {
    [CmdletBinding()]
    param (
        [Parameter(Mandatory = $true, Position = 0, ValueFromPipelineByPropertyName = $true)]
        [PSObject]$Data,

        [Parameter(Mandatory = $true, Position = 1)]
        [Array]$RequiredFields
    )

    process {
        $nullFields = @()
        $errors = 0

        if ($null -ne $RequiredFields) {
            foreach ($field in $RequiredFields) {
                if ($null -eq $Data.($field) -or $Data.($field) -eq '') {
                    $nullFields += $field
                    $errors++
                }
            }
            $nullFields = $nullFields -join ', '
        }

        if ($nullFields.Count -eq 0) {
            $nullFields = $null
        }

        $dataObject = [PSCustomObject]@{
            Data       = $Data
            NullFields = $nullFields
        }

        Write-Output $dataObject

    }
}