Powershell 无法读取VSTS联机版本变量
我正在使用VSTS环境变量,并且一直使用秘密类型的变量。Powershell 无法读取VSTS联机版本变量,powershell,azure,environment-variables,azure-devops,azure-keyvault,Powershell,Azure,Environment Variables,Azure Devops,Azure Keyvault,我正在使用VSTS环境变量,并且一直使用秘密类型的变量。 我正在使用POSH脚本(文件)生成一个变量(实际上,是从Azure Key Vault获取值并将该值设置为变量): #在发布步骤中添加为脚本参数 #脚本本身 Param( [string]$ResourceGroupNameArg, [string]$KeyVaultNameArg, [string]$KeyVaultSecretNameArg ) <...> $secret = Get-AzureKeyVa
我正在使用POSH脚本(文件)生成一个变量(实际上,是从Azure Key Vault获取值并将该值设置为变量): #在发布步骤中添加为脚本参数 #脚本本身
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"
Param(
[字符串]$ResourceGroupNameArg,
[字符串]$KeyVaultNameArg,
[字符串]$KeyVaultSecretNameArg
)
$secret=获取AzureKeyVaultSecret-VaultName$KeyVaultNameArg-Name$KeyVaultSecretNameArg
$secretValue=$secret.SecretValueText
写入主机“##vso[task.setvariable variable=SQLAdministratorPassword;issecret=true]$secretValue”
在这里,我可以通过替换$KeyVaultNameArg和$KeyVaultSecretNameArg变量向脚本传递不同的KeyVault名称(根据需要)。
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"
对于使用#vso[task.setvariable=
配置的任何其他变量,我可以使用构造$env:DatabaseName
(例如在另一个POSH脚本中)或代理阶段步骤中的$(DatabaseName)
检索它们(使用托管代理)
但是,对于issecret=true
变量,甚至对于手动创建的变量,我无法在发布部署过程中检索其值
文章说,
隐藏(秘密)变量的值安全地存储在
保存后,用户无法查看服务器和。在
部署时,发布管理服务将在
由任务引用,并通过安全的
HTTPS频道
因此,尽管变量是机密的,但脚本(甚至代理阶段步骤)应该可以访问这些变量。请参考以下步骤:
$(变量名称)
)不过,感谢您提供本指南,您能澄清一下PowerShell和链接变量的情况吗?尽管VSTS内部库是一种可接受的方法,但我希望对它有更多的控制权(这里使用POSH脚本访问Azure KeyVault、获取机密和设置变量)。根据日志,它会执行相同的过程,如果您以我的方式尝试,结果会是什么?我已经尝试使用库和变量组配置我的版本。事实上,这是有效的。但主要思想(和我的主要问题)是避免按KeyVault名称绑定(使用库方法进行绑定)。为了更好地理解,我更新了我的初始问题。请尝试打印$secretValue(写入主机$secretValue)并检查该值是否正确。顺便说一句,这两种方法对我都适用。请查看详细信息,遗憾的是,脚本设置变量不起作用。也许你有什么建议,为什么?