2013-07-30 42 views
8

我對PowerShell中Start-JobStart-Process之間的區別有些困惑。我知道Start-Job將在後臺運行,但我想知道是否與Start-Job運行方式不同,而不是Start-Process,以及是否存在其他影響。什麼時候應該使用另一種,並且是否有優勢?Powershell'Start-Job'與'Start-Process'

回答

14

啓動工作啓動一個後臺作業,並創建一個用於監控,查詢,並與作業中使用的cmdlet 交互的作業對象獲取在職接收在職等待工作Stop-JobRemove-Job。除非您使用Receive-Job查詢作業對象,否則不會看到任何交互式窗口或控制檯輸出。這就是「後臺工作」的含義 - 它運行但不與登錄會話交互。但是,如果有任何輸出,則由作業對象收集,您可以使用Receive-Job檢索它。通常可以通過檢查作業對象的屬性HasMoreData來判斷是否有數據要接收,但要小心,這是PowerShell 2中的錯誤 - 請記住這一點? "HasMoreData" is true even after Receive-Job

啓動過程啓動一個交互式運行的進程。

+0

重要提示:**作業是會話本地的。**您不能在一個PowerShell會話中執行「Start-Job」,而在另一個PowerShell會話中執行「Receive-Job」。 –