Functions/array.ps1

function Merge-Array(
    [object[]]$array = @(),

    [object[]]$arrayToMerge = @(),

    [object[]]$excludeList = @(),

    [ValidateSet("union", "overwrite")]
    [string]
    # array merge type: union, or overwrite. Default is union.
    $arrayMergeType = 'union'
) {
    if ($array -ceq $null) {
        return $arrayToMerge
    }

    [string[]]$skipItems = @()
    foreach ($property in $excludeList) { 
        $skipItems += Get-PropertyName $property
    }

    [object[]]$filteredArray = @()
    foreach ($item in $array | Where-Object {((Get-PropertyName $_) -CNotIn $skipItems )}) { 
        $skipItems += Get-PropertyName $item
        if ($arrayMergeType -ceq 'union') {
            $filteredArray += $item
        }
    }

    foreach ($item in ($arrayToMerge | Where-Object {((Get-PropertyName $_) -CNotIn $skipItems )})) {
        $filteredArray += $item
    }
    return $filteredArray
}

function Convert-ArrayToStringParams([object[]]$list = @()) {
    $result = ''
    foreach ($item in $list |  Where-Object { $_ }) {
        $result += '"{0}" ' -f $item
    }
    return $result
}