【问题标题】:Substitute variable as an input from the STDOUT of a console application替换变量作为来自控制台应用程序的 STDOUT 的输入
【发布时间】:2020-01-29 05:01:39
【问题描述】:

在我们的发布管道中,我们有一个控制台应用程序,它执行一个生成加密密钥并将其输出到 STDOUT 的功能。我们需要能够在部署期间在变量中使用此值(使用控制台应用程序的结果更新配置文件)。我们已经尝试在 Azure Devops 的命令行任务中使用“输出变量”选项,但不幸的是,我们需要以不同的格式使用它……而且它似乎无法按预期工作。

例如我们的命令行工具输出908321093RANDOMLYGENERATEDKEY3422543到STDOUT

我们的配置文件中该键的名称类似于 Settings.Security.OurKey 但是命令行任务中的输出变量不允许使用句点 (.),因此设置为 SettingsSecurityOurKey...我们也尝试了 SETTINGS_SECURITY_OURKEY,但任务从未设置变量值。

是否可以通过某种方式将 Azure Devops 变量设置为来自命令行或 powershell 脚本的输出变量的值?比如:

set $(Settings.Security.OurKey) = SettingsSecurityOurKey

或者有没有更简单的方法来实现这一点?好像应该没那么难。。

【问题讨论】:

    标签: cmd tfs azure-devops variable-substitution


    【解决方案1】:

    这听起来像是 Powershell 问题,而不是 Azure DevOps 的问题。

    # Variable name with special characters
    $VariableName.That.Contains.Periods     # This will NOT work.
    ${VariableName.That.Contains.Periods}   # This will work.
    

    更多信息请参考:https://blog.danskingdom.com/accessing-powershell-variables-with-periods-in-their-name/

    【讨论】:

    • OP希望将命令行应用程序中的STDOUT设置为变量值...我认为您的建议是如何在命令行上使用变量。
    【解决方案2】:

    如果您希望 PowerShell 变量包含命令的标准输出,只需分配它:

    $yourVariableName = your_command_that_writes_to_stdout
    

    如果输出只有一行,PowerShell 变量将包含单个字符串;否则它将包含一个数组。

    【讨论】:

      猜你喜欢
      • 2012-05-15
      • 1970-01-01
      • 2012-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-01
      • 1970-01-01
      • 2020-11-10
      相关资源
      最近更新 更多