我正在编写一个PowerShell模板系统,我已为其创建了一个我想用实际变量值替换的变量占位符。
例如,<%$myvar%>
应替换为$myvar
值。
当值为$true
或$false
时,我很难找到将其输出到文件的方法。
作为一种解决方法,我将$true
替换为1,将$false
替换为0,但我想知道它是否可以按字面输出它们。
以下是我的代码部分:
Get-Content myfile.ps1 | %{
if ($_ -match '<%(.*)%>') { #replace variable placeholder with actual value
$tag = $Matches[0]
Write-Verbose "found variable placeholder: $tag"
$variablename = $matches[1] -replace '^\$','' #remove $ char so we can use it in Get-Variable
Write-Verbose "variablename: $variablename"
[string]$newvalue = Get-Variable $variablename |
select -ExpandProperty value
if ($newvalue.ToLower() -eq "true") {
$newvalue = 1
}
if ($newvalue.ToLower() -eq "false") {
$newvalue = 0
}
Write-Verbose "new-value: $newvalue"
$newline = $_ -replace [Regex]::Escape($tag), $newvalue
$newline | Out-File newfile.ps1 -Append
}
注意:如果您有兴趣,可以在my profile找到该项目的链接。
答案 0 :(得分:4)
您当前的方法存在的一个问题是价值为true
或false
的字符串会替换为1
或0
不是吗?< / p>
另请注意,您正在将值转换为字符串,这可能会破坏其他值。
您可能要做的是首先检查值是否为[bool]
,然后如果是,则只需将$
添加到字符串值:
$newvalue = Get-Variable $variablename -ValueOnly
if ($newvalue -is [bool]) {
$newvalue = "`$$newvalue"
}