Private/Expand-EnvironmentVariables.ps1

function Expand-EnvironmentVariables {
    <#
    .SYNOPSIS
        Expands ${VARNAME} in a string with the value of the environment variable VARNAME.
    .PARAMETER InputString
        The string to expand.
    .OUTPUTS
        [string] The expanded string.
    #>

    param(
        [Parameter(Mandatory)]
        [string]$InputString
    )
    return $InputString -replace '\$\{([A-Za-z_][A-Za-z0-9_]*)\}', {
        $varName = $_.Groups[1].Value
        $envValue = [Environment]::GetEnvironmentVariable($varName)
        if ($envValue) {
            Write-VerboseMark -Message "Expanding environment variable $varName."
            return $envValue
        } else {
            Write-VerboseMark "Environment variable '$varName' is required but not set."
            return $null
        }
    }
}