Advanced Windows PowerShell Scripting Video Training

Advanced Windows PowerShell Scripting Video Training
Advanced Windows PowerShell Scripting Video Training

Friday, September 9, 2016

How to Provide Double Quotes in a String

PowerShell is full of little mysteries to uncover.  Here is one using the PowerShell Escape Character. 
The problem that we are addressing is that a string needed to be created in code that contains a path that had a space in it that was provided by a variable.  In order to provide the value of a variable to a string, we have a few options.

$uninst = "MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F32180101F0}"
$Path = "/c `"$uninst`" /quiet /norestart"
$Path

This example uses the PowerShell escape character.  We place the back tick in front of both of the double quotes surrounding $uninst.  Here is the result.

/c "MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F32180101F0}" /quiet /norestart

You can clearly see the double quotes are now inside the string.  Here is what it looked like without the escape characters.


You can see PowerShell considers this an error.

Here is another example using a combination of the string Join “+” operator and the single quotes.

$uninst = "MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F32180101F0}"
$Path = '/c "'+"$uninst"+'"/quiet /norestart'
$Path

/c "MsiExec.exe /X{26A24AE4-039D-4CA4-87B4-2F32180101F0}"/quiet /norestart

We are only using the double quotes to extract the value of $uninst.  The other double quotes are inside of the single quotes.  This treats them as the literal character of a double quote.  We actually created 3 different strings and joined them together into one string using the “+” operator.


No comments: