繁体   English   中英

无法在 Azure DevOps 管道“解析错误”中运行 PowerShell 脚本

[英]Can't run PowerShell script in Azure DevOps Pipeline 'parse error'

所以,我是 Azure Devops 的新手(但不是 Azure 或 PowerShell)。 我的管道中有两个脚本作为任务,第一个运行完美(注意:没有 az module 命令)。 第二个失败(它有一个 Az 调用)。 我在管道中遇到的错误是:

ParserError: /home/vsts/work/_temp/3f7b3ce1-6afb-46f3-b00d-1efe35fbac71.ps1:5
Line |
   5 |  } else {
     |  ~
     | Unexpected token '}' in expression or statement.

事情是这样的......我的脚本中没有'} else {',或者至少,我删除了它并得到了同样的错误。

所以无论是什么原因,都比我的脚本更根本。 我认为“/home/vsts/work/_temp/3f7b3ce1-6afb-46f3-b00d-1efe35fbac71.ps1”是我复制到远程系统的脚本,但似乎并非如此。

有什么办法,我可以找出那个文件是什么?

任务是设置了“pwsh: true”的“PowerShell@2”。 谢谢!

YAML:

trigger:
- main

pool:
  vmImage: ubuntu-latest

steps:
- task: AzureResourceManagerTemplateDeployment@3
  inputs:
    deploymentScope: 'Resource Group'
    azureResourceManagerConnection: 'Pay-As-You-Go(<guid>)'
    subscriptionId: '<guid>'
    action: 'Create Or Update Resource Group'
    resourceGroupName: 'project-Test'
    location: 'East US 2'
    templateLocation: 'Linked artifact'
    csmFile: 'deploy.template.json'
    csmParametersFile: 'deploy.parameters.json'
    deploymentMode: 'Incremental'
    deploymentOutputs: 'DeploymentOutput'

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: $(System.DefaultWorkingDirectory)/Get-ArmDeploymentOutput.ps1 -ArmOutputString '$(DeploymentOutput)' -MakeOutput -ErrorAction Stop
    pwsh: true
  displayName: Get-ArmDeploymentOutput

- task: PowerShell@2
  inputs:
    targetType: 'inline'
    script: $(System.DefaultWorkingDirectory)/Set-AzWebAppIPRestriction.ps1 -Priority 100 -Action 'Allow' -WebAppId '$(WebAppId)' -PipId '$(gwpipId)'' -ErrorAction Stop
    pwsh: true
  displayName: Set-AzWebAppIPRestriction

我发现在您的第二个 powershell 任务的脚本中有一个额外' in -PipId '$(gwpipId)'' 也许它导致了错误。

script: $(System.DefaultWorkingDirectory)/Set-AzWebAppIPRestriction.ps1 -Priority 100 -Action 'Allow' -WebAppId '$(WebAppId)' -PipId '$(gwpipId)'' -ErrorAction Stop

由于您在.ps1 文件中运行脚本。 您应该将powershell 任务targetType参数更改为filePath 并在filePath参数中设置.ps1文件。 请参见下面的示例:

steps:
- task: PowerShell@2
  displayName: 'PowerShell Script'
  inputs:
    targetType: filePath
    filePath: '$(System.DefaultWorkingDirectory)/Set-AzWebAppIPRestriction.ps1'
    arguments: '-Priority 100 -Action "Allow" -WebAppId "$(WebAppId)" -PipId "$(gwpipId)" -ErrorAction Stop'
    pwsh: true

如果您在脚本中使用 azure powershell 模块。 您可以使用Azure powershell 任务代替 powershell 任务。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM