在版本管理中,能否将一个PowerShell任务的输出通过管道传输到另一个PowerShell任务?

在版本管理中,能否将一个PowerShell任务的输出通过管道传输到另一个PowerShell任务?,powershell,azure,ms-release-management,azure-devops,Powershell,Azure,Ms Release Management,Azure Devops,下面是一个示例场景: 部署ARM模板的“Azure PowerShell”任务。ARM模板所做的只是创建一个应用程序服务计划、一个Web应用程序和一个存储帐户 部署Web应用的“Azure Web应用部署”任务 “Azure PowerShell”任务更新web应用的配置,以包含对ARM模板生成的存储密钥的引用 如何为第三个任务提供第一个任务的输出?是否有其他方法实现此目的?可以通过“输出”部分将ARM模板“链接”在一起,以共享从一个模板到另一个模板的状态 因此,您可以指定一个模板的输出,然后通

下面是一个示例场景:

  • 部署ARM模板的“Azure PowerShell”任务。ARM模板所做的只是创建一个应用程序服务计划、一个Web应用程序和一个存储帐户
  • 部署Web应用的“Azure Web应用部署”任务
  • “Azure PowerShell”任务更新web应用的配置,以包含对ARM模板生成的存储密钥的引用

  • 如何为第三个任务提供第一个任务的输出?是否有其他方法实现此目的?

    可以通过“输出”部分将ARM模板“链接”在一起,以共享从一个模板到另一个模板的状态

    因此,您可以指定一个模板的输出,然后通过调用该模板的Powershell脚本拾取该输出,或者您可以将这些模板链接在一起,以便它们都从一个新的AzureRmResourceGroupDeployment调用运行。使用Web app配置任务的模板直接拾取部署模板的输出。


    这里有一些很好的文档-

    您可以使用VSTS中的任务日志命令来“输出”“从一个任务中读取变量,并在另一个任务中读取它们。示例中的第一个Azure PS任务可以记录一个输出变量,该变量稍后可以在最后一个任务中读取。有关这些日志记录命令的格式,请参阅。

    Paul实现这一点的另一种方法是在第一个任务(Azure PowerShell)中完成所有3个任务-您还可以将1和3组合起来,留下2个单独的任务,或者使用VSTS中的库存“任务”为您工作

    因此,关于的工作流的第一步可以创建web应用(等),更新配置并部署web应用。如果不希望在模板中部署webapp,则可以将工作流中的步骤1和步骤3结合起来,单独进行站点部署。看看这些例子,结合起来,它们可以满足您的需求(我无法快速找到一个例子):

    (这显示了如何进行应用程序配置)

    您可以在创建存储帐户的同一部署中引用存储密钥(请参见:)


    (这显示了如何在模板中进行webdeploy)

    要回答您的特定问题,请查看每个commandlet的文档,它将描述它生成的内容,以及它从管道中获取的参数。通常,如果从您引用的每个命令创建的对象包含下一个任务所需的信息(或提供一种收集信息的方法),那么当然有一种方法可以将它们粘合在一起。您尝试过吗?从纯PowerShell/commandlet的角度来看,这是完全可能的。我可以通过管道将一个commandlet的输出传输到另一个commandlet。我的挑战是如何在发布管理中实现这一点,其中每个单独的commandlet都“包装”在一个发布管理任务中。这正是我们昨天开始走的路。关于引用存储键(使用listKeys()的链接是您文章中最棒的地方在同一个ARM部署中,发现如何引用存储密钥有点痛苦。我们需要从listKeys方法返回的第一个密钥。我认为此方法返回了一组密钥,但它返回了一个名为key1的对象w/a属性。我在这里发现:感谢您的响应。但是,我不希望ain ARM模板…问题更关注的是从一个PowerShell RM任务到另一个PowerShell RM任务的管道输出。@Paul我怀疑这不是您想要的答案(并且基本上预期会投反对票)但这可能是将来有人搜索这个问题的答案。所以我想无论如何我都会把它留下。我很高兴你得到了分类。谢谢你的回答。从技术上来说,这回答了我的问题,但我认为@bmoore msft的回答可能是我应该首先处理这个问题的方式。