在bash中,&符號(&)可用於在後臺運行命令並在命令運行完成之前向用戶返回交互控制。在Powershell中有這樣做的等效方法嗎?在bash使用的Powershell相當於用於分支/運行後臺進程的bash&(0123)
例子:
sleep 30 &
在bash中,&符號(&)可用於在後臺運行命令並在命令運行完成之前向用戶返回交互控制。在Powershell中有這樣做的等效方法嗎?在bash使用的Powershell相當於用於分支/運行後臺進程的bash&(0123)
例子:
sleep 30 &
的幾個回答這個問題。
我已經在PowerShell v1.0中成功使用了此處描述的解決方案http://jtruher.spaces.live.com/blog/cns!7143DA6E51A2628D!130.entry。在PowerShell v2.0中它肯定會更容易。
ps2> start-job {start-sleep 20}
我還沒有想出如何實時獲得標準輸出,啓動工作要求你輪詢標準輸出與GET-工作
更新:我無法啓動的工作,輕鬆地做我想要哪個基本上是bash &運營商。這裏是我最好的黑客迄今
PS> notepad $profile #edit init script -- added these lines
function beep { write-host `a }
function ajp { start powershell {ant java-platform|out-null;beep} } #new window, stderr only, beep when done
function acjp { start powershell {ant clean java-platform|out-null;beep} }
PS> . $profile #re-load profile script
PS> ajp
似乎傳遞給Start-Job
腳本塊不以相同的當前目錄爲Start-Job
命令執行的,所以一定要確保,如果需要指定完全合格的路徑。
例如:
Start-Job { C:\absolute\path\to\command.exe --afileparameter C:\absolute\path\to\file.txt }
只要命令是可執行文件或具有相關聯的可執行文件,使用啓動過程(可從V2):
Start-Process -NoNewWindow ping google.com
您還可以在個人資料中添加以下功能:
function bg() {Start-Process -NoNewWindow @args}
,然後調用變爲:
bg ping google.com
在我看來,啓動作業是在後臺運行的進程的簡單的例子矯枉過正:
注意:關於您的初始示例,「bg sleep 30」不起作用,因爲睡眠是Powershell命令行開關。只有當您實際分叉進程時,啓動過程才起作用。
您可以使用PowerShell作業cmdlet來實現您的目標。
在PowerShell中有6個與作業相關的cmdlet可用。
如果感興趣的話,你可以下載樣品How to create background job in PowerShell
這些解決方案似乎不適用於Windows 7. – Marcin 2011-05-22 10:07:43
@Marcin - 這個答案來自2008年。在Windows 7中, powershell 2.0是RTM,並具有用於後臺作業的「start-job」cmdlet。 – x0n 2011-06-23 20:39:27
沒有在我的Windows 7上沒有。 – Marcin 2011-06-23 21:24:46