我正在创建一个带有powershell脚本的发布定义,用来自它工作的发布定义中的env变量替换文件,但它似乎没有捕获隐藏在发布定义中的密码变量。有没有办法告诉powershell寻找隐藏的变量?
UPDATE:这是脚本,它找到了$paramsFilePath
中未隐藏我的密码的所有变量。在发布定义中的环境变量中隐藏了脚本并且脚本没有找到它。
param(
[string]$paramsFilePath,
)
Write-Verbose -Verbose "Entering script Replace-SetParameters.ps1"
Write-Verbose -Verbose ("Path to SetParametersFile: {0}" -f $paramsFilePath)
# get the environment variables
$vars = Get-ChildItem -path env:*
# read in the setParameters file
$contents = Get-Content -Path $paramsFilePath
# perform a regex replacement
$newContents = "";
$contents | % {
$line = $_
if ($_ -match "__(\w+)__") {
$setting = Get-ChildItem -path env:* | ? { $_.Name -eq $Matches[1] }
if ($setting) {
Write-Verbose -Verbose ("Replacing key {0} with value from environment" -f $setting.Name)
$line = $_ -replace "__(\w+)__", $setting.Value
}
}
$newContents += $line + [Environment]::NewLine
}
Write-Verbose -Verbose "Overwriting SetParameters file with new values"
Set-Content $paramsFilePath -Value $newContents
Write-Verbose -Verbose "Exiting script Replace-SetParameters.ps1"
答案 0 :(得分:1)
与普通变量不同,您尝试获取的密码是秘密变量。
秘密变量
如果包含a,我们建议您使用变量Secret 密码,密钥或您需要避免的其他类型的数据 曝光
我们所做的变量替换是对任务的输入,我们不会解析脚本。要使用秘密变量,您必须将这些变量作为输入添加到脚本中,我们明确地不将这些变量填充到环境中。你可以看看这个讨论:Use hidden / secret variables in commands