所以,我是 Azure Devops 的新手(但不是 Azure 或 PowerShell)。我的管道中有两个脚本作为任务,第一个运行完美(注意:没有 az 模块命令)。第二个失败(它有一个 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”是我复制到远程系统的脚本,但似乎并非如此。
有什么办法,我可以找出那个文件是什么?
任务是 'PowerShell@2',设置了 'pwsh: true'。 谢谢!
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
答案 0 :(得分:0)
我发现您的第二个 powershell 任务的脚本中的 '
中有一个额外的 -PipId '$(gwpipId)''
。也许它导致了错误。
script: $(System.DefaultWorkingDirectory)/Set-AzWebAppIPRestriction.ps1 -Priority 100 -Action 'Allow' -WebAppId '$(WebAppId)' -PipId '$(gwpipId)'' -ErrorAction Stop
因为您在 .ps1 文件中运行脚本。您应该将 powershell task 的 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 task 而不是 powershell 任务..