Azure Powershell - Az模块无法在Ubuntu托管的构建代理上运行

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

我有一个在Azure DevOps中运行的构建,在Ubuntu 16.04托管的构建代理上运行。我正在使用最新版本的“Azure Powershell”任务(版本4. *预览版),它应该是多平台的,支持Powershell核心,并支持使用Azure Powershell Az module

Azure Powershell Task Version 4

但是,它不太有效。在运行我的任何脚本之前,它出错了:

##[section]Starting: Azure PowerShell script: InlineScript
==============================================================================
Task         : Azure PowerShell
Description  : Run a PowerShell script within an Azure environment
Version      : 4.0.0
Author       : Microsoft Corporation
Help         : [More Information](https://go.microsoft.com/fwlink/?LinkID=613749)
==============================================================================
##[warning]Can\'t find loc string for key: GeneratingScript
GeneratingScript
[command]/usr/bin/pwsh -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command . '/home/vsts/work/_temp/e66222aa-283d-4dfd-b5c1-f1d2a4a3ba9f.ps1'
Could not find the module Az.Accounts with given version. If the module was recently installed, retry after restarting the Azure Pipelines task agent.
At /home/vsts/work/_tasks/AzurePowerShell_72a1931b-effb-4d2e-8fd8-f8472a07cb62/4.0.0/InitializeAz.ps1:25 char:5
+     throw ("Could not find the module Az.Accounts with given version. ...
+     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo          : OperationStopped: (Could not find ...nes task agent.:String) [], RuntimeException
+ FullyQualifiedErrorId : Could not find the module Az.Accounts with given version. If the module was recently installed, retry after restarting the Azure Pipelines task agent.

##[error]PowerShell exited with code '1'.
##[error]PowerShell wrote one or more lines to the standard error stream.
##[section]Finishing: Azure PowerShell script: InlineScript

Az Powershell模块似乎在Windows VS2017托管代理上正常工作/加载,但在Ubuntu上没有运气。有关修复此问题的任何建议

azure-devops azure-powershell azure-devops-hosted-agent
1个回答
2
投票

通过添加在构建代理上安装Az Powershell模块的先前构建步骤,我能够使Az Powershell在Ubuntu代理上的Azure DevOps构建中工作。

我添加了一个powershell脚本来安装Az模块并卸载Azure-Rm模块;我从command-line task调用它,所以我可以把它包装在sudo中,使它成为一个全球变化。

这是命令行任务(YAML):

steps:
- displayName: 'Install Az Powershell Modules'
  script: |
   sudo /usr/bin/pwsh -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -File "$(Build.Repository.LocalPath)/build/install-az-modules.ps1" 

这是build/install-az-modules.ps1脚本:

<#
.SYNOPSIS
    Build agent script to install Az Powershell modules. This script should be run as sudo.

    On a linux build agent, this command can be run as:
    sudo /usr/bin/pwsh -NoLogo -NoProfile -NonInteractive -Command . '$(Build.Repository.LocalPath)/build/install-az-modules.ps1'
#>

# Disable status info to clean up build agent stdout
$global:ProgressPreference = 'SilentlyContinue'
$global:VerbosePreference = "SilentlyContinue"

$azureRmModule = Get-InstalledModule AzureRM -ErrorAction SilentlyContinue
if ($azureRmModule) {
  Write-Host 'AzureRM module exists. Removing it'
  Uninstall-Module -Name AzureRM -AllVersions
  Write-Host 'AzureRM module removed'
}

Write-Host 'Installing Az module...'
Install-Module Az -Force -AllowClobber

if (Get-Command Uninstall-AzureRm -ErrorAction SilentlyContinue) {
  Write-Host 'Running Uninstall-AzureRm...'
  Uninstall-AzureRm
}
© www.soinside.com 2019 - 2024. All rights reserved.