当前位置: 首页 > 知识库问答 >
问题:

Powershell访问Azure DevOps秘密变量

谯德佑
2023-03-14

我试图从Powershell管道脚本中读取Azure DevOps秘密变量。该变量在Azure中如下所示:

我尝试以参数的形式访问secret变量,例如

[CmdletBinding()]
Param (
    $SecurePassword = $env:Password
)

简单地作为环境变量,例如

$SecurePassword = $env:Password

如上映射$(Password)显示了隐藏在星号后面的字符串。

共有1个答案

拓拔高畅
2023-03-14

我们需要在Azure DevOps中创建一个新项目,并需要将所有管道迁移到新项目中。瞧,没有人知道所有的秘密,出口/进口不能完成这一点。

我编写了一个脚本,将所有环境变量输出到构建摘要旁边的“Extensions”选项卡中。格式化了什么的。

输出秘密的关键是通过在秘密值中插入'<-exception->'短语来更改字符串,并保存到文件中。一旦创建了文件,我们就删除字符串'<-explice->'的所有实例,保存该文件,并将其作为构建摘要的扩展页。

function GetSecretLength ($secretVar){
     $i = 0;
     while($true){
          try { 
               $secretVar.substring(0,$i)|out-null 
          } catch { 
               break
          };
          $i++; 
     }
     if ($i -le 1) { return 1 }
     else { return $i-1 };
} 
function GetSecret($secret){
     $length = GetSecretLength($secret);
     if ($length -ge 2) {
        return $secret.substring(0,$length-1 )+"<-eliminate->"+$secret.substring($length-1,1)
    } elseif ($length -eq 1) {
        return $secret+"<-eliminate->"
    } else {
        return ""
    }
} 

$var = (gci env:*).GetEnumerator() | Sort-Object Name
$out = ""

Foreach ($v in $var) { $out = $out + "`t{0,-28} = {1,-28}`n" -f $v.Name, (GetSecret($v.Value)) }

$fileName = "$env:BUILD_ARTIFACTSTAGINGDIRECTORY\build-variables.md"
write-output "dump variables on $fileName"
set-content $fileName $out

write-output "##vso[task.addattachment type=Distributedtask.Core.Summary;name=Environment Variables;]$fileName"

((Get-Content -path $fileName -Raw) -replace '<-eliminate->', '') | Set-Content -Path $fileName
 类似资料:
  • 我试过不同的组合,没有一个对我有效。 测试管道号。1-使用连接到密钥库的group变量(为了方便起见,这里的密钥名是静态的,但实际上,它是在管道过程中通过powershell脚本设置的): 结果是:

  • 我正在尝试从使用文件,以使用谷歌云平台机密管理器。我已经按照这里的说明操作了,但是我遇到了一个错误,说我没有权限访问这个秘密。 这就是我得到的错误: 我确实创建了一个具有“所有者”权限的服务帐户,下载了它,并使其

  • 我试图编译代码时遇到了这个异常。我已经安装了eclips工具包,我正在使用EclipseKepler 异常线程"main"java.lang.NoClassDefFoundError: org/apache/共用/日志/LogFactory在com.amazonaws.Amazon WebServiceClient.(Amazon WebServiceClient.java:56)在test_to

  • 为了更清楚地说明,我明白最终必须有人被信任。例如,ops工程师可以拥有自己的凭据来访问Vault,并获得相同数据库的密码。这将允许用户访问,但不允许该用户模拟服务。是否有任何理由ops工程师也应该知道服务自己的凭据,以便在初始化后访问保险库?

  • 如何在不使用Azure函数属性的情况下检索Azure函数中的“秘密值”? null 我有一个应用程序,它在Azure KeyVault中秘密地存储了密钥/值对。在存储数据时,我保留标识符以备以后检索: 存储该值的代码为:

  • 我有一个使用Bosh部署的concourse环境。它配置有AWS机密管理器。管道机密模板的格式为 我在AWS秘密管理器(其他类型的秘密)中创建了一个秘密,其值如下。 我在团队中设置了一个总汇管道。