I am trying to pass a variable from PHP to a powershell script.
My PHP code is :
shell_exec("powershell.exe -ExecutionPolicy Bypass -NoProfile -InputFormat none -file test.ps1 '$txt' < NUL ");
And I am trying to capture it in powershell using :
param ( [string]$txt ) Add-Content "test.txt" $txt
The $txt is a string variable as I can write it in a txt file from PHP. I do not know exactly where I am wrong as the powershell is executed.
Advertisement
Answer
Use the following:
shell_exec("powershell.exe -ExecutionPolicy Bypass -NoProfile -file test.ps1 "$txt"");
Note: If the value of $txt had embedded " chars., they’d need to be escaped.
The PowerShell CLI doesn’t recognize
'...'quoting when passing arguments to a script file executed via-File; use"...".- Your attempt with
'$txt'shouldn’t have resulted in an empty file, but it would have included the'chars. as part of the argument; if$txthappens to contain spaces, each space-separated word would have become a separate argument, with the first starting with'and the last ending in'
- Your attempt with
Since you’re not providing input via stdin, there is no need for
-inputFormatand< NUL