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 有正确的信息......

4

2 回答 2

1

对于您的第一个问题,您需要使用双引号包含路径。建议您是否可以删除测试中的空格 2

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

要记录作业的结果,请使用Receive-Jobcmdlet。

再试一次:
尝试将所有路径放在双引号中,然后在 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 回答