【问题标题】:Not able to execute Powershell 7 scripts parallelly on DevOps无法在 DevOps 上并行执行 Powershell 7 脚本
【发布时间】:2020-08-28 08:47:35
【问题描述】:

作为我们发布部署的一部分,我们在发布管道中使用 Azure Powershell 步骤来使用 DACPAC 更新我们的数据库。目前,这会遍历每个数据库并按顺序更新它们。每个数据库大约需要 35 到 40 秒,该过程中的这一步大约需要一个小时(大约 100 dbs),并且会随着客户的增长和数据库的增长而继续增长。

我一直在研究,发现 Powershell 7 现在支持并行执行。但是,Azure DevOps 并不正式支持这一点。然而,在我的研究中,我发现业内的一些用户在他们的部署中以某种方式运行 Powershell 7。

有什么办法,我们如何在 DevOps 上实现 Powerlshell 7 脚本的并行执行?

【问题讨论】:

    标签: powershell azure-devops


    【解决方案1】:

    要在 DevOps 上运行 Powershell 7 脚本,您需要明确选择在 Azure DevOps 中使用 Powershell 核心 (v 7.0.3) 的选项。 从 Powershell 6 开始,它现在称为 Powershell 核心,并以 pwsh.exe 的形式启动。 PowerShell Core 与 Windows PowerShell 并行运行,默认情况下,当您在 Azure DevOps 上使用 Powershell 任务时,它使用普通的 powershell(即 v 5.1)。因此,在没有此 Powershell 的情况下运行时默认使用没有此功能的普通 powershell.exe。

    我们可以使用任务的高级设置下的复选框使用 Powershell 核心在 Azure DevOps 任务上启用 Powershell 核心,并使用并行功能。

    【讨论】:

      【解决方案2】:

      作为解决方法,您可以考虑在管道中运行并行作业并将 azure powershell 任务添加到每个作业。在 Azure Pipelines 中,您可以在 Microsoft 托管的基础架构或您自己的(自托管)基础架构上运行并行作业。

      查看可用的并行作业: 浏览到组织设置 > 管道 > 保留和并行 工作 > 并行工作。

      详情请参考本官方document

      【讨论】:

        猜你喜欢
        • 2019-01-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-05-13
        相关资源
        最近更新 更多