2013-07-30 25 views
8

Tôi hơi bối rối về sự khác biệt giữa Start-JobStart-Process trong PowerShell. Tôi biết rằng Start-Job sẽ chạy ở chế độ nền, nhưng tôi tự hỏi liệu mọi thứ có chạy khác với Start-Job hơn với Start-Process hay không và liệu có những tác động nào khác của việc sử dụng cái này trái ngược với cái kia hay không. Khi nào bạn nên sử dụng cái này qua cái kia, và có những ưu điểm nào có lợi thế hơn cái kia không?Powershell 'Start-Job` so với' Start-Process '

Trả lời

14

Start-Job bắt đầu một công việc nền và tạo ra một đối tượng công việc mà bạn sử dụng để theo dõi, truy vấn, và tương tác với các công việc bằng cách sử dụng cmdlet Get-Job, Nhận-Job, Chờ-Job, Dừng-công việcXóa công việc. Bạn sẽ không thấy bất kỳ cửa sổ tương tác hoặc đầu ra giao diện điều khiển nào cho đến khi bạn truy vấn đối tượng công việc bằng Nhận-công việc. Đó là những gì "công việc nền" có nghĩa là - nó chạy, nhưng không tương tác với phiên đăng nhập. Tuy nhiên, nếu có bất kỳ đầu ra nào, được thu thập bởi đối tượng công việc và bạn có thể truy xuất nó với Nhận-công việc. Bạn thường có thể biết liệu có dữ liệu để nhận hay không bằng cách kiểm tra thuộc tính HasMoreData của đối tượng công việc, nhưng hãy cẩn thận, đó là lỗi trong PowerShell 2 - hãy nhớ điều này? "HasMoreData" is true even after Receive-Job

Quy trình bắt đầu khởi chạy quá trình chạy tương tác.

+0

Lưu ý quan trọng: ** Công việc là cục bộ trong phiên của bạn. ** Bạn không thể thực hiện 'Bắt đầu-công việc' trong một phiên quyền hạn và' Nhận công việc 'trong phiên khác. –