Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

PowerShell Invoke-Expression with ampersand in the command string

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.

like image 718
Matt Wall Avatar asked Sep 15 '12 15:09

Matt Wall


1 Answers

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'
like image 192
Ansgar Wiechers Avatar answered Sep 19 '22 10:09

Ansgar Wiechers