I am trying to run a Powershell script in Azure DevOps pipelines.
Since the script uses Az module commands, we decided to use AzurePowerShell@5 task in the pipeline.
As mentioned in this doc:
By default, Azure PowerShell v5 uses PowerShell Core for Linux agents
Since we have self-hosted Linux agents, it is necessary to manually install PowerShell Core and Az modules on the agent before using AzurePowerShell@5.
Followed these steps to install powershell core and the steps mentioned here to install Az module.
# Install powershell core
sudo apt-get update
sudo apt-get install -y wget apt-transport-https software-properties-common
wget -q "https://packages.microsoft.com/config/ubuntu/$(lsb_release -rs)/packages-microsoft-prod.deb"
sudo dpkg -i packages-microsoft-prod.deb
sudo apt-get update
sudo apt-get install -y powershell
# Install Az Module
Install-Module -Name Az -Repository PSGallery -RequiredVersion '11.1.0' -Force
Update-Module -Name Az -Force
But when we use the task in the pipeline,
- task: AzurePowerShell@5
name: test_script
displayName: 'test_script'
inputs:
azureSubscription: $(arm_service_connection)
ScriptType: 'FilePath'
ScriptPath: $(System.DefaultWorkingDirectory)/powershell_scripts/test_script.ps1
ScriptArguments: >
-subscriptionId $(subscription_id)
azurePowerShellVersion: 'OtherVersion'
preferredAzurePowerShellVersion: '11.1.0'
FailOnStandardError: true
pwsh: true
it gives an error:
Generating script.
/usr/bin/pwsh -NoLogo -NoProfile -NonInteractive -ExecutionPolicy Unrestricted -Command . '/agent/_work/_temp/f3210d6a-92eb-4665-92bd-9c6790840726.ps1'
File saved!
Exception: /agent/_work/_tasks/AzurePowerShell_72a1931b-effb-4d2e-8fd8-f8472a07cb62/5.231.0/Utility.ps1:94
Line |
94 | … throw ("Could not find the module path with given version …
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
| Could not find the module path with given version.
##[error]PowerShell exited with code '1'.
##[error]PowerShell wrote one or more lines to the standard error stream.
How to fix this?
I found a blog here that explains the same. I also checked the file that was mentioned in the error.
It is evident that the
AzurePowerShell@5task is looking for theAzmodule files at a path/usr/share/az_<azurePowerShellVersion>.So, I installed the module in the correct path using the following script and it worked:
Make sure the ado agent user has
readandexecutepermissions on that module directory and files.Specifying these parameters for the task is important to pick up the correct version: