internal/functions/Resolve-VariableToken.ps1
Function Resolve-VariableToken { <# .SYNOPSIS Replaces all the tokens in a string with provided variables .DESCRIPTION Parses input string and replaces all the #{tokens} inside it with provided variables .PARAMETER InputString String to parse .PARAMETER Runtime Variables collection. Token names should match keys in the hashtable .EXAMPLE Resolve-VariableToken -InputString "SELECT '#{foo}' as str" -Runtime @{ foo = 'bar'} #> [CmdletBinding()] Param ( [string[]]$InputString, [hashtable]$Runtime ) foreach ($str in $InputString) { Write-Debug "Processing string: $str" foreach ($token in (Get-VariableTokens $str)) { Write-Debug "Processing token: $token" #Replace variables found in the config $tokenRegEx = "\#\{$token\}" if ($Runtime) { if ($Runtime.Keys -contains $token) { $str = $str -replace $tokenRegEx, $Runtime.$token } } Write-Debug "String after replace: $str" } $str } } |