在 PowerShell 脚本中访问 Azure DevOps 管道中的安全文件

Posted

技术标签:

【中文标题】在 PowerShell 脚本中访问 Azure DevOps 管道中的安全文件【英文标题】:Accessing secure file in Azure DevOps pipeline in PowerShell script 【发布时间】:2022-01-03 17:13:33 【问题描述】:

我是 DevOps 的新手,正在尝试通过 PowerShell 脚本访问安全文件。这是场景:

我使用的代理是 ubuntu 18.04 我已将证书作为安全文件上传,并且可以在执行管道时下载。我已经通过查看证书 (.cer) 所在的 $(Agent.TempDirectory) 内容来验证它。

然后我正在运行具有以下代码行的 PowerShell 脚本:

$Certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new('$(Agent.TempDirectory)/mycert.cer')

但是这一行总是给我以下错误:

这里有什么问题。

【问题讨论】:

【参考方案1】:

宏语法$() 只会在模板中展开。如果你的脚本存储在文件中,你需要使用环境变量:$env:AGENT_TEMPDIRECTORY

$Certificate = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new("$env:AGENT_TEMPDIRECTORY/mycert.cer")

【讨论】:

以上是关于在 PowerShell 脚本中访问 Azure DevOps 管道中的安全文件的主要内容,如果未能解决你的问题,请参考以下文章

从 Powershell 获取 Azure Active Directory 访问令牌

Azure Pipelines:在 Powershell 中设置和访问变量

无法将环境变量传递给 azure 管道 yaml 中的 powershell 脚本(非内联)

如何使用 powershell/Azure CLI 列出有权访问 Azure DevOps 项目存储库的用户?

“创建管道时出错。”在 Azure 管道自托管代理中运行 powershell 脚本时

通过 powershell 和 Azure Runbook 与个人联系人同步交换中的全局地址列表