Скриптът не се изпълнява в powershell

Имам този кодов фрагмент

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

Знам със сигурност, че променливата $actDate не се заменя на реда, как да направя това?

Моите два въпроса са: как да заменя $actDate за неговата стойност и как да запазя резултата от заданието в един журнал

Благодаря за вашата помощ

РЕДАКТИРАНЕ

Това също не работи:

$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 има точната информация...


person Cito    schedule 09.09.2013    source източник
comment
Как точно не работи?   -  person Ansgar Wiechers    schedule 10.09.2013
comment
Не прави нищо. Ако изпълня тази команда от bash, тя работи добре. Но ако го стартирам в рамките на това, той казва Bad usage и това е, защото скриптът не замества $actDate за 2013-09-09... Все пак намерих начин да го накарам да работи.   -  person Cito    schedule 10.09.2013


Отговори (2)


За първия си въпрос трябва да включите пътя, като използвате двойни кавички. Предложение, ако след това можете да премахнете интервала в тестването 2

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

За да регистрирате резултата от заданието, използвайте Receive-Job cmdlet.

Още един опит:
Опитайте да поставите всички пътища в двойни кавички и след това оградете всичко с единични кавички след частта cmd.exe /c, както е показано по-долу. Опитайте се да постигнете нещо по-просто с проста задача и след това се опитайте да добавите сложност

$job = Start-Job -name "Hel" -Command { cmd.exe /c '"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" /?'}
person Mitul    schedule 09.09.2013
comment
Опитах това, ако направя -command { cmd.exe /c c:\$actDate } изходът в конзолата след Get-Job е cmd.exe /c C:\$actDa.. вместо C:\2013-09 -09... - person Cito; 09.09.2013

Успях да го накарам да работи, като го направих по следния начин:

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, така че реших, че това може да е чрез добавяне на целия скрипт в блока, това беше работа... и наистина го направи...

Така че не знам защо не работи, но това е поправка за мен.

person Cito    schedule 09.09.2013
comment
Атрибутът на powershell $actDate беше извън контекста от scriptblock -command { } решението, което казахте, че работи, поставя променливата в контекст...Поне така мисля :) - person The Unique Paul Smith; 10.09.2013