2014-10-19 45 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

相關問題