View Full Version : Run Powershell script with parameters containing special chars
teognost
03-06-2023, 03:40 PM
Hi
I have a Powershell step launching Test.ps1 ,in Input section I have 2 params which are 2 macros %MyParam1% and %MyParam2% (see the attach).
The problem is MyParam2 contains special chars [% so the step fails:
Error expanding macros or script in property Parameters: Test2]<Error parsing macros at position 8>
I tried as well with a batch step and it fails also:
Error expanding macros or script in property command: C:\Windows\System32\WindowsPowerShell\v1.0\powersh ell.exe -nologo -noninteractive -executionpolicy Unrestricted "& 'C:\Program Files\VisBuildPro9\Test.ps1' -Param1 'Test1' -Param2 'Test2]<Error parsing macros at position 8>'
Is there any way to launch the script Test.ps1 with second param containing special chars?
kinook
03-06-2023, 07:54 PM
[vbld_EscapeString(vbld_AllMacros()("MyParam2"))]
https://kinook.com/VisBuildPro/Manual/specialchars.htm
teognost
03-07-2023, 05:24 AM
It works,thanks a lot!
teognost
03-07-2023, 06:33 PM
I have one more issue,if param MyParam2 contains { I got an error at step Run Test PowerShell script-with parameters :
3/8/2023 12:26:39 AM: Building project step 2 - Run Test PowerShell script-with parameters...
C:\Windows\System32\WindowsPowerShell\v1.0\powersh ell.exe -nologo -noninteractive -executionpolicy Unrestricted "& 'C:\Program Files\VisBuildPro9\Test.ps1' Test1 Test{2[]??"
Missing closing '}' in statement block or type definition.
+ CategoryInfo : ParserError: ( : ) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingEndCurlyBrace
This is because the powershell script is launched with parameters without enclosing ' '
For example if I launch the script from a batch file step by adding enclosing ' ' all is ok:
3/8/2023 12:30:42 AM: Building project step 3 - Run PowerShell script from batch step...
C:\Windows\System32\WindowsPowerShell\v1.0\powersh ell.exe -nologo -noninteractive -executionpolicy Unrestricted "& 'C:\Program Files\VisBuildPro9\Test.ps1' -Param1 'Test1' -Param2 'Test{2[]??'
Param1= Test1
Param2= Test{2[]??
Is there a way to add enclosing ' ' when using a Powershell step?
I attached the bld project.
kinook
03-08-2023, 09:00 AM
Add the single quotes to the parameter value.
teognost
03-08-2023, 09:12 AM
Tried that,same error:
C:\Windows\System32\WindowsPowerShell\v1.0\powersh ell.exe -nologo -noninteractive -executionpolicy Unrestricted "& 'C:\Program Files\VisBuildPro9\Test.ps1' Test1 ''Test{2[]??''"
Missing closing '}' in statement block or type definition.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingEndCurlyBrace
I see now the second param has 2 chars ' at beginning and 2 at end although I added just one.
kinook
03-09-2023, 02:33 PM
When I run your project in v10.8, I get a command like
... -File D:\Temp\Test.ps1 Test1 'Test{2[]??'
teognost
03-09-2023, 02:40 PM
I am using VBP 9.7 but I think it does not make any difference.
Did you try to copy the Test.ps1 attached in a message above to the VBP folder(%PROJDIR%)?
I get the error when running first step"Run Test PowerShell script-with parameters" which is running %PROJDIR%\Test.ps1 with 2 Input params :
%MyParam1%
'[vbld_EscapeString(vbld_AllMacros()("MyParam2"))]'
The step "Run PowerShell script from batch step" is running ok as I put there the command with Param2 enclosed with' :
C:\Windows\System32\WindowsPowerShell\v1.0\powersh ell.exe -nologo -noninteractive -executionpolicy Unrestricted "& '%PROJDIR%\Test.ps1' -Param1 '%MyParam1%' -Param2 '[vbld_EscapeString(vbld_AllMacros()("MyParam2"))]'
kinook
03-09-2023, 08:54 PM
3/9/2023 6:53:24 PM: Building project step 2 - Run Test PowerShell script-with parameters...
C:\Program Files\PowerShell\7\pwsh.exe -nologo -noninteractive -executionpolicy Unrestricted -File D:\Temp\Test.ps1 Test1 'Test{2[]??'
Param1= Test1
Param2= 'Test{2[]??'
3/9/2023 6:53:25 PM: Build successfully completed (elapsed = 00:00:00).
teognost
03-10-2023, 05:56 AM
This is strange ,do not understand why you can run it ok but when I run it I get:
3/10/2023 11:52:52 AM: Building project step 2 - Run Test PowerShell script-with parameters...
C:\Windows\System32\WindowsPowerShell\v1.0\powersh ell.exe -nologo -noninteractive -executionpolicy Unrestricted "& 'C:\Program Files\VisBuildPro9\Test.ps1' Test1 ''Test{2[]??''"
Missing closing '}' in statement block or type definition.
+ CategoryInfo : ParserError: (:) [], ParentContainsErrorRecordException
+ FullyQualifiedErrorId : MissingEndCurlyBrace
The second parameter in Input window is:
'[vbld_EscapeString(vbld_AllMacros()("MyParam2"))]'
Maybe I have some options activated you do not have?
Or maybe could you please try to run in in VBP 9.7 (same version as me )?
kinook
03-10-2023, 12:12 PM
I get the same result as you in v9.7.
vBulletin® v3.8.11, Copyright ©2000-2024, vBulletin Solutions Inc.