我看到很多在字符串中使用变量的例子,但这是一个稍微不同的问题,也许我没有正确地表达它以寻找答案。我有一个字符串,其中有一个变量,但该变量的值尚未被该值替换。我将此字符串存储在数据库中,以便可以在不更改代码的情况下更改设置,并且多个脚本可以共享这些值。
如果我在 shell 中输入以下内容:
$ScriptPath = "C:\Scripts"
$LogPath = "$ScriptPath\Logs"
效果很好。我回来了
C:\Scripts\Logs
如果我从数据库中读取该字符串,那就是另一回事了。
$SQL = "SELECT * FROM Script_Settings WHERE enabled = 1 AND (environment = '$Environment' OR environment = '*') AND version = $Version ORDER BY environment"
$sqlresult = Invoke-SQLCmd -ServerInstance $SettingDBServer -Database $SettingsDB -Query $SQL -TrustServerCertificate
$LogPath = $sqlresult.Log_Path
Write-Output $LogPath
$ScriptPath\Logs
是否可以让 Powershell 来计算字符串?我想它相当于:
$ThePath = '$ScriptPath\Logs'
$LogPath = $ThePath
在 PowerShell 中使用字符串模板的一种快速方法是调用
$ExecutionContext.InvokeCommand.ExpandString
来插入字符串。
$ScriptPath = "C:"
$ThePath = '$ScriptPath\Logs'
$ExecutionContext.InvokeCommand.ExpandString($ThePath)
会回来
C:\Logs