Functions/Internal/Remove-JobNewClusterMetaDataAsPSObject.ps1

function Remove-JobNewClusterMetaDataAsPSObject {
    [CmdletBinding()]
    param ( 
        [Parameter(  
            Position = 0,   
            Mandatory = $true,   
            ValueFromPipeline = $true,  
            ValueFromPipelineByPropertyName = $true  
        )] [PSObject]$customObject
    );
    process{
    <# Allowed values for Job new_cluster #>
    <# See - https://docs.microsoft.com/en-us/azure/databricks/dev-tools/api/latest/jobs#--newcluster #>
    $allowedValues = @('num_workers', 'autoscale', 'spark_version', 'spark_conf', 'node_type_id', 'driver_node_type_id',
        'custom_tags', 'cluster_log_conf', 'init_scripts', 'spark_env_vars', 'enable_elastic_disk', 'instance_pool_id')

    <# Remove any properties that are not defined in the allowedValues array #>
    foreach ($prop in $customObject.PSObject.Properties) {
        if ($prop.Name -notin $allowedValues) {
            # Write-Output "[Removing] property $($prop.Name) from Job new_cluster Configuration."
            $customObject.PSObject.Properties.Remove($prop.Name)     
        }
    }

    return $customObject
}
}