cloudpups / authenticated-scripts

An Azure DevOps extension that lets you use a Service Connection with a shell script!
https://marketplace.visualstudio.com/items?itemName=cloudpup.authenticated-scripts
Other
16 stars 3 forks source link

Execute Powershell script with powershell instead of pwsh #13

Open FH-Inway opened 9 months ago

FH-Inway commented 9 months ago

While playing around with my fork, I noticed that the task for Powershell scripts executes them with Powershell 7 (pwsh.exe) on a Windows runner.

The following implicates that this should only happen when the pwsh parameter is true. https://github.com/cloudpups/authenticated-scripts/blob/86b99c2b89c3202b31b6bcf05ad6658e43f86510/tasks/powershell/task.json#L121-L129

I believe this is a bug that was copied over from https://github.com/microsoft/azure-pipelines-tasks/blob/master/Tasks/PowerShellV2/powershell.ts, since both that logic and https://github.com/cloudpups/authenticated-scripts/blob/main/tasks/powershell/execute-cli.ts do not make use of the pwsh parameter. The Microsoft task is not affected by that bug, because it uses https://github.com/microsoft/azure-pipelines-tasks/blob/master/Tasks/PowerShellV2/powershell.ps1 when the task is executed on a Windows runner. That script considers the pwsh parameter.

I made a change on my fork to address that issue, but it would require some additional work to bring it over to this repo (mainly to add logic to check if the task is running on Windows or not).

If there is interest for that, I can try creating a pull request.

JoshuaTheMiller commented 9 months ago

@FH-Inway- if you can find the time to port those changes over, please do so 😀 copying over the bug itself was definitely an oversight, and one I had not ran into with my own use. This will be helpful for others too!

FH-Inway commented 8 months ago

@JoshuaTheMiller See #14

Note this changes the behavior of the PowerShell task on Windows, because by default, it will now use powershell.exe (i.e. PowerShell 5) instead of pwsh.exe (PowerShell 7). If this causes an issue, it can be easily fixed by setting the pwsh parameter of the task to true, which restores the previous behavior.