我有这段代码
$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有正确的信息......
答案 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
,那么我可以通过在块中添加整个脚本来实现它......实际上,它就是这样做的。 ..
所以我不知道它为什么不起作用,但这对我来说是一个修复。