private/ConvertTo-SfGlobalValueSetXml.ps1

function ConvertTo-SfGlobalValueSetXml {

    [CmdletBinding()]
    param (
        [Parameter(Mandatory)]
        [pscustomobject] $ValueSet,

        [Parameter(Mandatory)]
        [PSCustomObject[]] $PicklistValues
    )

    $ErrorActionPreference = 'Stop'
    [bool] $IsDebug   = $DebugPreference   -ne 'SilentlyContinue'
    [bool] $IsVerbose = $VerbosePreference -ne 'SilentlyContinue'

    $PicklistValues = $PicklistValues |
        Where-Object { ($_._ValueSetType -eq 'GlobalValueSet') -and ($_._ValueSetName -eq $ValueSet._Name)}

    $xml = '<?xml version="1.0" encoding="UTF-8"?>'
    $xml += '<GlobalValueSet xmlns="http://soap.sforce.com/2006/04/metadata">'

    foreach ($PicklistValue in $PicklistValues) {
        $xml += ConvertTo-SfPicklistValueXml $PicklistValue
    }

    $xml += ConvertTo-XmlTag 'description' $ValueSet._Description
    $xml += ConvertTo-XmlTag 'masterLabel' $ValueSet._MasterLabel -ForceEmptyTag
    $xml += ConvertTo-XmlTag 'sorted' $ValueSet._Sorted -IsTrueFalseNull
    $xml += '</GlobalValueSet>'

    return $xml
}