Asked by:
Unable to process password variable in powershell because of special characters

Question
-
Hi Team, I am working on a PS script to install VSTS agents on my Azure VMs through an Azure DevOps Release Pipeline.
Here in the below script, I am passing a Service Account Password, which is set by my customers. Below script fails whenever Password consist of special characters like
")';:(
Code:
.\config.cmd --deploymentgroup --deploymentgroupname DeployGroupSQL --agent $env:COMPUTERNAME
--runasservice
--windowsLogonAccount $(ServiceAccountUser)
--windowsLogonPassword "$(Service_Account_Password)" --work '_work'
--adddeploymentgrouptags --deploymentgrouptags $SQL
--url 'https://dev.azure.com/campusmgmt-product-development/'
--projectname 'Student' --auth PAT --token u4bq6j******************************bhhyq;
I have tried putting whole password into double quotes as well as single quotes but of no help.
This Service Account Password is a Pipeline variable and hence needs to be passed like $(Service_Account_Password).
Can you please suggest on how can I deal with this situation. I have already tried putting this as a here-string, Secure-String, or script parameter but has not proved of any help.
Hoping to hear back soon as this is urgent for my project release.
- Edited by Praharsh Pandey Tuesday, April 2, 2019 6:51 AM
Tuesday, April 2, 2019 6:26 AM
All replies
-
Sorry but that is not a PowerShell command and this is a PowerShell forum. Please post your issues in the correct forum for VSTS.
\_(ツ)_/
- Proposed as answer by LeeSeenLiMicrosoft contingent staff Friday, May 10, 2019 2:54 AM
Tuesday, April 2, 2019 8:20 AM -
May be you are right and this is not exactly a PowerShell command. But eventually this could be only resolved if you know PowerShell.
I was hoping you guys could help, but no worries.
Feel it was my luck day today. After banging my head for past 8 hours on this I could finally work this through using Stop-Script character in PowerShell '--%'. Which obviously was PowerShell
Solution I tried:
.\config.cmd --deploymentgroup --deploymentgroupname DeployGroupCTS --agent $env:COMPUTERNAME --runasservice --work '_work' --adddeploymentgrouptags --deploymentgrouptags $CTS --url 'https://dev.azure.com/campusmgmt-product-development/' --projectname 'Student' --auth PAT --token u4bq6j************************************hhyq --windowsLogonAccount $(ServiceAccountUser) --windowsLogonPassword --% "$(Service_Account_Password)" %;%
Ref: https://stackoverflow.com/questions/18923315/using-in-powershell
Hope this might helps others.
Praharsh Pandey
Tuesday, April 2, 2019 12:37 PM -
The issue has nothing to do with PowerShell. You are running a batch file that addresses a subsystem that is not a PowerShell system. Post in the correct forum if you actually want to get an answer.
There is no PowerShell code anywhere in you example. Just because there is a $ in the line does not make it PowerShell.
\_(ツ)_/
Tuesday, April 2, 2019 3:25 PM