脚本没有在PowerShell上运行

时间:2013-09-09 19:35:27

标签: powershell powershell-v2.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没有在线上被替换,我怎么这么做?

我的两个问题是:如何将$ 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有正确的信息......

2 个答案:

答案 0 :(得分:1)

对于第一个问题,您需要使用双引号包含路径。建议您是否可以删除测试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" /?'}

答案 1 :(得分: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,那么我可以通过在块中添加整个脚本来实现它......实际上,它就是这样做的。 ..

所以我不知道它为什么不起作用,但这对我来说是一个修复。