7

アンパサンドを含む文字列を含む変数をInvoke-Expressionに渡そうとしていますが、引用符で囲んで文字列として渡す必要があると言われています。

エスケープして、生の文字列と変数内の文字列を「」と「」の組み合わせで使用する複数の組み合わせを試しましたが、役に立ちませんでした。どうすればいいですか?

コードは次のとおりです。

$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"

`アンパサンドの前にaを使用し、変数を入力する前にInvoke-Expressionの前に二重引用符を使用してみました。

私は(示されているように)-CommandInvoke-Expressionを使用して変数を引用符で囲み、「&」と「&」を入れてアンパサンドを文字列に連結しようとしました。

Flash Media Serverがコマンドをストリーム名から解析し、HTTPライブストリーミングチャンクを開始する前に以前に記録されたデータをフラッシュするために、そこにアンパサンドが必要です。

4

3 に答える 3

20

アンパサンドは文字列内で二重引用符で囲む必要があるため、内側"&"の二重引用符をエスケープする必要があります

$streamout_calmedia01 = "rtmp://...vent`"&`"adbe-record-mode=record"

または文字列を一重引用符で囲みます

$streamout_calmedia01 = 'rtmp://...vent"&"adbe-record-mode=record'
于 2012-09-15T17:55:00.200 に答える
1

$streamout_calmedia01を次のように変更します。

$streamout_calmedia01 = "rtmp://75.126.42.216/livepkgr/calmedialive01?adbe-live-event=liveevent```&adbe-record-mode=record"

次に、$ streamout_calmedia1を(新しい値$ streamout_calmedia1で)再割り当てする必要があり、それが機能するはずです。

于 2012-09-15T17:53:43.287 に答える
0

使用する必要はまったくありませんInvoke-Expression。その使用を避けることは問題を排除します。EXEファイルツールを直接呼び出すだけです。

$streamout_calmedia01 = "rtmp://75.126.42.216/livepkgr/calmedialive01?adbe-live-event=liveevent&adbe-record-mode=record"

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

これにより、二重エスケープのすべての複雑さが回避され、意図したとおりに実行されるはずです。

于 2012-09-15T20:43:28.550 に答える