Passing double quotes through PowerShell + WinRM

Viewed 3932

I am using this code to execute remote code (MSI installs) on a server. Passing double quote through the script is just not working. I tried two variations as given below (#3 and #4) along with the outputs.

Input #1 (Simple case to test double quotes in the command)

powershell.exe -inputformat none -File client.ps1 -target 1.2.3.4 -port 5985 -password "pass" -username "user" -command "echo hello"

Output (Works)

hello

Input #2 (Understandable, this won't work)

powershell.exe -inputformat none -File client.ps1 -target 1.2.3.4 -port 5985 -password "pass" -username "user" -command "echo hello world"

Output

hello
world

Input #3

powershell.exe -inputformat none -File client.ps1 -target 1.2.3.4 -port 5985 -password "pass" -username "user" -command "echo `"hello world`""

Output (What happened to the other word?)

hello

Input #4

powershell.exe -inputformat none -File client.ps1 -target 1.2.3.4 -port 5985 -password "pass" -username "user" -command @'
>> echo "hello world"
>> '@
>>

Output (Again, the 2nd word is missing)

hello

If the echo works, I should be able to incorporate the changes to the MSI commands in the Runspace based usage I am doing.


MSI setup works fine if I use the following. Notice the single quotes.

msiexec /qn /i 'C:\setups\My Software.msi'

But, I need to pass public properties and MSI does not like single quote in it. Trying to run the following opens up the MSI arguments dialog.

msiexec /qn /i 'C:\setups\My Software.msi' MYPROP='My Value'

Running this from the local command prompt on the server works fine.

msiexec /qn /i "C:\setups\My Software.msi" MYPROP="My Value"
2 Answers
Related