2014-10-19 36 views
1

我有一个简短的PowerShell脚本节省了我的打字时间......也许在这个时候作品网页摘要的未来......PowerShell的执行调用,表达式调用不是为了

第一个表达式启动一个可执行的一些参数(汇编程序)。 如果此工具没有错误地退出,Python脚本将在Python启动程序py.exe的帮助下启动。除此之外,我收集所有格式化的汇编程序文件(* .fmt)并将其删除。

当我运行这个脚本时,首先执行Python脚本,然后运行汇编程序。

我在这里错过了什么?

Invoke-Expression "..\asm\KCPSM6.exe -c4096 main_KC705.psm" 

if ($LastExitCode -ne 0) { 
    Write-Host "ERROR: KCPSM6.exe return with an error code." -ForegroundColor Red 
    exit 1 
} else { 
    Invoke-Expression "py.exe -3 ..\py\psmProcessor.py -v main_KC705.log" 

    $fileList = Get-ChildItem -Path ..\psm -Recurse -Filter *.fmt 
    $fileList += Get-ChildItem -Path ..\lib -Recurse -Filter *.fmt 
    $fileCount = $fileList.Count 
    Write-Host "Deleting $fileCount temporary files." 
    if ($fileCount -gt 0) { 
     $fileList | Remove-Item 
    } 
} 
+1

为什么你甚至可以使用调用表达式,并不直接运行它?关于不同的执行时间:powershell只是开始工作,并没有等到它完成,它只是继续下去,所以你的第二个命令将在汇编程序完成其工作之前被调用,我猜。对于一个可能的解决方案,请参阅我的答案 – Paul 2014-10-19 23:46:27

回答

3

尝试与Start-Process这样开始的:

Start-Process X:\asm\KCPSM6.exe -argumentlist @("-c4096", "main_KC705.psm") -wait 

有关如何启动一个更大的参考可执行文件看这里:

Technet

+0

下面您可以重定向并输出启动过程,看看参数。另外为了进入和输出你的PowerShell窗口添加-NoNewWindow参数。 – Paul 2014-10-20 01:24:11

+0

我删除了我的第一条评论,因为它现在正在工作......非常奇怪......我确信在将这个问题发布到SF之前,我测试了所有组合。感谢-NoNewWindows参数提示:) – Paebbels 2014-10-20 01:31:37

+0

当然,没有问题:)下一次,你可以全部回退到Get-Help cmdletname -full。 PowerShell的帮助非常全面,大多数命令的选项都比单个答案中描述的要多。 – Paul 2014-10-20 01:33:51

相关问题