Kinook Software Forum

Kinook Software Forum (https://www.kinook.com/Forum/index.php)
-   [VBP] Third Party Tools (https://www.kinook.com/Forum/forumdisplay.php?f=3)
-   -   Run Powershell script with parameters containing special chars (https://www.kinook.com/Forum/showthread.php?t=5807)

teognost 03-06-2023 02:40 PM

Run Powershell script with parameters containing special chars
 
2 Attachment(s)
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]
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]'

Is there any way to launch the script Test.ps1 with second param containing special chars?

kinook 03-06-2023 06:54 PM

[vbld_EscapeString(vbld_AllMacros()("MyParam2"))]

https://kinook.com/VisBuildPro/Manual/specialchars.htm

teognost 03-07-2023 04:24 AM

It works,thanks a lot!

teognost 03-07-2023 05:33 PM

1 Attachment(s)
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 08:00 AM

Add the single quotes to the parameter value.

teognost 03-08-2023 08:12 AM

1 Attachment(s)
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 01: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 01: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 07: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 04: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 11:12 AM

I get the same result as you in v9.7.


All times are GMT -5. The time now is 02:27 AM.


Copyright © 1999-2023 Kinook Software, Inc.