我正在使用VSTS环境变量并使用秘密类型的变量 我使用POSH脚本(文件)生成变量(实际上,从Azure Key Vault获取值并将此值设置为变量):
#在发布步骤中添加为脚本参数
-ResourceGroupNameArg "$(ResourceGroupName)" -KeyVaultNameArg "$(KeyVaultName)" -KeyVaultSecretNameArg "$(KeyVaultSecretName)"
#剧本本身
Param(
[string]$ResourceGroupNameArg,
[string]$KeyVaultNameArg,
[string]$KeyVaultSecretNameArg
)
<...>
$secret = Get-AzureKeyVaultSecret -VaultName $KeyVaultNameArg -Name $KeyVaultSecretNameArg
$secretValue = $secret.SecretValueText
Write-Host "##vso[task.setvariable variable=SQLAdministratorPassword;issecret=true]$secretValue"
在这里,我可以将不同的KeyVault名称(根据我的需要)传递给脚本 - 通过替换$ KeyVaultNameArg和$ KeyVaultSecretNameArg变量。
对于使用##vso[task.setvariable variable=
配置的任何其他变量,我可以使用构造$env:DatabaseName
(例如在另一个POSH脚本中)或$(DatabaseName)
在代理阶段步骤中检索它们(使用Hosted 2017剂)。
但是,对于issecret=true
变量或甚至手动创建的变量,我无法在发布部署过程中检索其值。
根据this文章,
隐藏(秘密)变量的值安全地存储在 用户保存后无法查看服务器。期间 部署时,发布管理服务在解密这些值时 由任务引用并通过安全将它们传递给代理 HTTPS频道。
因此IMO应该可以为脚本访问变量(甚至代理阶段),尽管它们是秘密的。
答案 0 :(得分:0)
请参阅以下步骤:
$(variable name)
)