set PATH in azure pipelines in Windows
In fact, you are very close to the correct solution. Your second powershell task has set the PATH successfully. You can add another separate task to print out the system PATH
value to verify this.
- pwsh: |
$NewPathInRegistry = (Get-ItemProperty -Path 'Registry::HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment' -Name PATH).path
Write-Host $NewPathInRegistry
To set the PATH
programmatically, you can not use set
command, this command can indeed set the environment variable PATH
, but the disadvantage of set
is the new PATH
value is only available in the current command line terminal, it does not actually been added into the System Variable. That's why you were getting an unrecognized error in the next script
step.
To permanently add the directory to environment variable PATH
so that it can work for next others steps, you need use setx
or add them into Registry by using reg add
. But the usage of setx has limitation that the PATH
value max to 1024 characters. So, here the best solution is updating PATH
by modifying the Registry value.
BUT, updating Registry still has another issue, you must kill current process and run one new process to run perl6
so that it can read the new available Registry setting.
If run stop-process
in Azure devops pipeline, it will make the task failed with exit code -1. This is the expected exit code, so you can set the continueOnError: true
to step so that the next steps can continue.