ValidateNotNullOrWhiteSpaceAttribute.ps1

if ($PSVersionTable.PSVersion.Major -lt 7 -or ($PSVersionTable.PSVersion.Major -eq 7 -and $PSVersionTable.PSVersion.Minor -lt 4)) {
    class ValidateNotNullOrWhiteSpaceAttribute : System.Management.Automation.ValidateEnumeratedArgumentsAttribute {

        [void] ValidateElement($element) {
            if (-not ($element -is [string]) -and -not ($element -is [string[]])) {
                throw [System.Management.Automation.ParameterBindingException]::New($element)
            }

            $element | % {
                if ([string]::IsNullOrWhiteSpace($element)) {
                    throw [System.Management.Automation.ParameterBindingException]::New("Can not contain an empty or whitespace value")
                }
            }
        }

    }
}