【问题标题】:Azure devops pipeline task error : Measure-Command invocation failsAzure devops 管道任务错误:Measure-Command 调用失败
【发布时间】:2023-04-08 07:33:01
【问题描述】:

当我在 VS 代码中调试以下代码行时,它工作正常。但是,当此代码在 azure devops(发布管道 azure powerShell 任务)中执行时,我得到以下任务错误。 azure powerShell 任务版本 = ~ 5.* 这个版本是特定的吗?

(Measure-Command {
        1..200 | ForEach-Object -Parallel $testScript -ThrottleLimit 5
    }).TotalMinutes

错误: 2020-12-16T11:25:36.6181969Z + $timeTaken = (Measure-Command { 2020-12-16T11:25:36.6183027Z + ~~~~~~~~~~~~~~~~~ 2020-12-16T11:25:36.6184374Z + CategoryInfo: MetadataError: (:) [Measure-Command], ParameterBindingException 2020-12-16T11:25:36.6185735Z + FullyQualifiedErrorId : AmbiguousParameterSet,Microsoft.PowerShell.Commands.MeasureCommandCommand

【问题讨论】:

  • 看起来问题出在 ForEach-Object 命令上。下面的代码抛出“无法使用指定的命名参数解析参数集”错误。代码:1..100 | ForEach-Object -Parallel {Write-Host "Test"} -ThrottleLimit 5

标签: azure powershell azure-devops


【解决方案1】:

无法使用指定的命名参数解析参数集

我可以重现这个问题。此问题的根本原因是 PowerShell 7 支持命令:ForEach-Object -Parallel

此问题与 PowerShell 版本有关。

这里是the doc 关于 Powershell 7 的信息:

使用 ForEach-Object -Parallel 的管道并行化

在 azure devops 中,默认使用 WindowsPowerShell 5.1。

要解决此问题,您需要在Azure PowerShell Task -> Advanced中选择选项:Use PowerShell Core

然后它会在代理中使用Powershell 7,命令可以成功执行。

【讨论】:

  • @suraj_123 太棒了!很高兴知道它可以工作。如果可能,您可以accepting this answer。谢谢。
猜你喜欢
  • 2021-05-10
  • 2020-11-09
  • 2021-07-26
  • 2022-07-15
  • 1970-01-01
  • 2021-08-09
  • 2020-07-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多