2014-10-28 107 views
1

我有一個我試圖開發的powershell 2腳本。此腳本的目的是環繞一個批處理腳本,並智能地選擇要運行的所述批處理腳本的版本。某處在我的代碼行,我有一些邏輯是這樣的:如何讓powershell腳本在同一個終端執行批處理命令

& $myCommand $args 

$ mycommand的是批處理文件我想運行的完全合格的文件名。 $ args是傳遞給這個腳本的參數。這工作除了運行$ myCommand時打開一個命令窗口。我如何防止這種情況,以便輸出在同一個PowerShell外殼內?

奇怪的是,如果我直接執行命令,它會顯示我想要的方式。因此,像:

C:\myCommand.bat $args 

考慮到我需要選擇哪個命令我希望在運行時運行,我怎麼讓它所以輸出在同一個殼,當我使用「&」要執行的命令在變量?謝謝!

回答

1

使用Start-Process-NoNewWindow參數,而不是&

Start-Process -filepath C:\myCommand.bat -argumentList @("arg1","arg2") -NoNewWindow 
+0

該訣竅。對於可能嘗試此操作的人有幾點注意事項: 1.)文件路徑必須包含擴展名。將var設置爲C:\ foo並不夠好,但它必須設置爲C:\ foo.bat。 2)這很像將&添加到BASH命令的末尾。爲了讓進程同步調用,你必須提供一個-Wait參數。 3)如果你只是想通過參數,你可以把$ args而不是@(「arg1」,「arg2」),因爲$ args是一個String []。 – 2014-10-28 15:26:52

+0

@JasonThompson一切都是真的,我只是指定了數組,因爲有些人只是使$ args成爲一個字符串 – Paul 2014-10-28 15:34:23

相關問題