【问题标题】:Are pipeline variables available in PowerShell task in Azure DevOps?Azure DevOps 的 PowerShell 任务中是否提供管道变量?
【发布时间】:2020-06-16 13:00:50
【问题描述】:

我有这个 PowerShell 脚本,它读取一些环境变量并输出它们:

Write-Host "name: $(tenantName) version: $(versionRelease) url: $(urlApplication)"

这些变量被定义为管道变量,也在 Azure DevOps 发布管道中的变量组中。

当在定义为 InlinePowerShell task 内运行时,此脚本按预期工作。但是,当使用 文件路径 配置 PowerShell 任务时,完全相同的脚本将无法工作。在这种情况下,找不到tenantName env 变量:

tenantName : The term 'tenantName' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.

有没有办法让环境变量对“文件”脚本可用,就像它们对“内联”脚本一样?

【问题讨论】:

    标签: powershell azure-devops environment-variables


    【解决方案1】:

    我设法修复它,部分感谢@Cbsch 的回答。实际上,我的 PowerShell 脚本的语法不正确,但是将 $(tenantName) 更改为 $tenantName 并不能解决问题,因为 $tenantName 不存在。我必须使用$env:<variableName> 语法从环境变量中读取它。

    固定脚本:

    Write-Host "name: $env:tenantName version: $env:versionRelease url: $env:urlApplication"
    

    【讨论】:

    • 非常感谢这里分享的这个解决方案。你可以accept your answer,让其他人直接知道这是工作。
    【解决方案2】:

    我无法回答其中的 Azure 部分,但您的代码对于您正在尝试的内容无效。您需要在 $() 块中包含 $

    就像现在一样,Powershell 正在尝试调用一个名为 tenantName 的函数,或者找到一个名为 tenantName.exe 的应用程序来调用。

    这将起作用:

    Write-Host "name: $($tenantName) version: $($versionRelease) url: $($urlApplication)"
    

    甚至更好:

    Write-Host "name: $tenantName version: $versionRelease url: $urlApplication"
    

    $() 语法用于如果您需要将一些实际代码放入字符串中,例如引用属性,例如 Write-Host "Hello $($user.name)!"

    【讨论】:

      猜你喜欢
      • 2020-08-27
      • 1970-01-01
      • 1970-01-01
      • 2023-02-09
      • 1970-01-01
      • 2021-12-09
      • 2020-07-28
      • 1970-01-01
      • 2020-11-30
      相关资源
      最近更新 更多