0

このコードスニペットがあります

$actDate=Get-Date -Format 'yyyy-MM-dd'
Start-job -name "FMLE" -command { cmd.exe /c 'c:\Program Files (x86)\Adobe\Flash Media Live Encoder 3.2\FMLEcmd.exe' /p C:\tasks\testing_2\testing 2_$actDate.xml /ap username:password /ab username:password /l C:\Users\acruz\AppData\Local\Temp\temp.log }

var $actDate が行で置き換えられていないことは確かです。どうすればよいですか?

私の 2 つの質問は、その値の $actDate を置き換える方法と、ジョブの結果を 1 つのログに保存する方法です。

ご協力いただきありがとうございます

編集

これも機能しません:

$actDate = (Get-Date -Format 'yyyy-MM-dd')
$Args = ("/p C:\tasks\testing_2\testing 2_$actDate.xml","/ap username:password", "/ab uysername:password", "/l C:\Users\acruz\AppData\Local\Temp\temp.log")
$Args

$j = Start-job -name "FMLE" -ScriptBlock { & 'c:\Program Files (x86)\Adobe\Flash Media Live Encoder 3.2\FMLEcmd.exe' @args } -ArgumentList $args

Get-Job $j.Id
Receive-Job -Job $j | Out-File 'C:\Users\acruz\AppData\Local\Temp\temp.log' -encoding ASCII -append -force 

$Args には正しい情報がありますが...

4

2 に答える 2

1

最初の質問では、二重引用符を使用してパスを含める必要があります。テスト2でスペースを削除できるかどうかの提案

"C:\tasks\testing_2\testing2_$actDate.xml"

ジョブの結果をログに記録するには、Receive-Jobコマンドレットを使用します。

もう一度試してください:
以下に示すように、すべてのパスを二重引用符で囲み、cmd.exe /c 部分の後にすべてを単一引用符で囲みます。単純なタスクでより単純なことを達成してから、複雑さを追加してみてください

$job = Start-Job -name "Hel" -Command { cmd.exe /c '"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" /?'}
于 2013-09-09T19:45:52.913 に答える
0

私は次のようにすることでそれを機能させることができました:

Start-job -Verbose -ScriptBlock {
    $actDate = Get-Date -Format yyyy-MM-dd
    cd "c:\Program Files (x86)\Adobe\Flash Media Live Encoder 3.2\"
    .\FMLEcmd.exe /p "C:\site.com.mx\tasks\test_23445678\test 23445678_$actDate.xml" /ap user:password /ab user:password /l C:\site.com.mx\task.log
}

それを使用し-commandても機能しません。変数をまったく置き換えないためです。また、-ArgumentListどちらかでそれを行うと、変数を置き換えて$actDateいたので、ブロック内にスクリプト全体を追加することでうまくいったかもしれません...そして実際にそれをしました...

なぜ機能しないのかわかりませんが、これは私にとっては修正です。

于 2013-09-09T21:34:38.073 に答える