您可以在 Azure 管道 YAML 文件中有条件地使用“netsh http add urlacl”吗?

问题描述 投票:0回答:1

我们需要在构建服务器上注册 HTTP 侦听器,并希望当一切正常时我们的管道步骤全部为“绿色”。因此,为了让我们的代码运行,我们必须运行以下代码:

netsh http add urlacl url=http://+:8080/

但是,当在构建服务器上运行两次时,我们收到以下错误:

Url reservation add failed, Error: 183 Cannot create a file when that file already exists.

到目前为止一切顺利。但是,如果我们更改构建服务器或添加/删除某些服务器等,我们的代码可能不再工作。如果那是几个月/几年后,谁会记得添加 http 侦听器......

那么,有没有办法有条件地添加urlacl代码?

类似:

netsh http show urlacl url=http://+:8080/ 
    {If No results, only then run the following line of code, otherwise do nothing else:}
netsh http add urlacl url=http://+:8080/

解决方法是将其记录在某处,如果我们再次遇到问题,请记住记录在哪里。或者始终执行此步骤,但在下一个 YAML 步骤中添加“条件:successedOrFailed()”?然而这些选项并不是优选的。

http azure-devops yaml azure-pipelines netsh
1个回答
0
投票

那么,有没有办法有条件地添加urlacl代码?

您可以使用 PowerShell 任务运行以下脚本来有条件地添加 urlacl 代码。

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: |
      $urlacl = netsh http show urlacl url=http://+:8080/
      if ($urlacl -like "*Reserved URL            : http://+:8080/*") {
          Write-Host "URL reservation already exists, no action taken."
      } else {
          netsh http add urlacl url=http://+:8080/ user=DOMAIN\user
          netsh http show urlacl url=http://+:8080/
      }

这是我的测试结果:

result

© www.soinside.com 2019 - 2024. All rights reserved.