PowerShell Invoke-Expression with ampersand in the command string
Solution 1
The ampersand must be double-quoted inside the string "&"
, so you need to escape the inner double quotes
$streamout_calmedia01 = "rtmp://...vent`"&`"adbe-record-mode=record"
or put the string in single quotes
$streamout_calmedia01 = 'rtmp://...vent"&"adbe-record-mode=record'
Solution 2
Change $streamout_calmedia01 to:
$streamout_calmedia01 = "rtmp://75.126.42.216/livepkgr/calmedialive01?adbe-live-event=liveevent```&adbe-record-mode=record"
Then you have to re-assign $streamout_calmedia1 (with the new value of $streamout_calmedia1) and it should work.
Matt Wall
Updated on July 09, 2022Comments
-
Matt Wall almost 2 years
I am trying to pass a variable with a string that contains an ampersand into Invoke-Expression, and it is telling me I have to put it in quotations and pass it as a string.
I've tried multiple combinations of escaping and using a raw string and a string in a variable with combinations of "" and '' to no avail. How can I do it?
Here's the code:
$streamout_calmedia01 = ` "rtmp://75.126.42.216/livepkgr/calmedialive01?adbe-live-event=liveevent&adbe-record-mode=record" $streamcmd_calmedia01 = "C:\avconv\usr\bin\avconv.exe 'rtmp://75.126.42.211/transcoder/mobileingest live=1' -f flv -c:v libx264 -r 30 -g 120 -b:v 410000 -c:a aac -ar 22050 -b:a 64000 -strict experimental -y $streamout_calmedia01" Invoke-Expression "$streamcmd_calmedia01"
I've tried using a
`
before the ampersand and using a double quotation in front of Invoke-Expression before putting in the variable,I've tried (as is shown) putting quotations around the variable with the
-Command
for Invoke-Expression and also putting '&' and "&" and concatenating the ampersand to the string.I need the ampersand in there for Flash Media Server to parse the command out of the stream name and flush prior recorded data before beginning HTTP live streaming chunking.
-
latkin almost 12 yearsThis should have no effect.
&
does not need escaping in double quote strings, and the backtick is ignored/discarded:"&".Length -> 1
and"``&".Length -> 1
(Second example should only have one backtick, seems I can't figure out how to put a single backtick in markdown backtick code!) -
latkin almost 12 yearsMaybe you meant to use single quotes, or double quotes with a double backtick?
-
Keith Hill almost 12 yearsNo it was supposed to have 3 backticks. Not sure what happened there.