2013-04-30 34 views
11

Tôi đang làm việc để tạo tập lệnh sẽ kích hoạt bộ đếm hiệu suất và lưu trữ chúng trong tệp .csv, cuộn qua khi tệp quá lớn. Chạy tập lệnh từ lời nhắc powerhell hoặc ISE (Tôi đang chạy v.2/win server 2008) hoạt động tốt và các tệp đang chạy chính xác.Làm cách nào để chạy tập lệnh PowerShell dưới dạng tác vụ nền mà không hiển thị cửa sổ?

Tuy nhiên, khi tôi cố gắng thực hiện lệnh bằng dòng nhắc cmd sau (ngay cả khi thử nút chuyển/k trên cmd), dấu nhắc lệnh sẽ đóng ngay lập tức và tệp không được chạy.

powershell.exe -windowstyle hidden {iis_test.ps1} 

Tôi cũng đã thử những điều sau và mặc dù tôi thấy Powershell không dừng lại (tôi theo dõi qua trình quản lý tác vụ, tìm Powershell.exe để hiển thị), tôi không thấy tệp đang tạo.

powershell.exe -noexit -windowstyle hidden {iis_test.ps1} 

Tôi cũng không thấy bất kỳ lỗi nào bị bắt ở bất kỳ nơi nào (trình xem sự kiện, cửa sổ nhắc lệnh).

Bất kỳ ý tưởng nào? Cuối cùng, mục tiêu của tôi là có một điều winbs vb gọi những tập tin kịch bản này, và tự nhiên tôi nghĩ rằng việc tìm ra lệnh lệnh nhắc sẽ hữu ích. Lưu ý rằng điều quan trọng là tập lệnh này phải di động và chạy trên bất kỳ hệ thống Windows 2008 Server nào (vì vậy tôi cần phải tránh xa các thực thể của bên thứ ba sẽ yêu cầu cài đặt thêm).

EDIT: Tôi cần sử dụng đối số -file để chỉ định tệp để chạy.

Trả lời

14

thử này từ một vỏ DOS/CMD:

powershell.exe -windowstyle hidden -file C:\iis_test.ps1 
+2

Làm việc đó! Tôi cũng tìm thấy khoảng 5 giây trước câu trả lời của bạn. Cảm ơn! –

+1

điều này vẫn hiển thị một cửa sổ, mặc dù một thời gian ngắn khi bắt đầu – Sajuuk

5
Powershell.exe -windowstyle hidden -file C:\iis_test.ps1 

Nhưng khi bạn chạy lệnh này, một cửa sổ CMD sẽ xuất hiện.
Tuy nhiên, bạn có thể sử dụng VBscript thay vì

Set objShell = CreateObject("WScript.Shell") 
objShell.Run "CMD /C START /B " & objShell.ExpandEnvironmentStrings("%SystemRoot%") & "\System32\WindowsPowerShell\v1.0\powershell.exe -file " & "YourScript.ps1", 0, False 
Set objShell = Nothing 
Các vấn đề liên quan