|
|
Thread Tools | Rate Thread | Display Modes |
#1
|
|||
|
|||
Run Powershell script with parameters containing special chars
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? |
#2
|
|||
|
|||
[vbld_EscapeString(vbld_AllMacros()("MyParam2"))]
https://kinook.com/VisBuildPro/Manual/specialchars.htm |
#3
|
|||
|
|||
It works,thanks a lot!
|
#4
|
|||
|
|||
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. |
#5
|
|||
|
|||
Add the single quotes to the parameter value.
|
#6
|
|||
|
|||
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. |
#7
|
|||
|
|||
When I run your project in v10.8, I get a command like
... -File D:\Temp\Test.ps1 Test1 'Test{2[]??' |
#8
|
|||
|
|||
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"))]' |
#9
|
|||
|
|||
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). |
#10
|
|||
|
|||
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 )? |
#11
|
|||
|
|||
I get the same result as you in v9.7.
|
Tags |
powershell , special charcaters |
|
|