đặt một tệp .cmd đơn giản vào thư mục con của tôi với tệp .ps1 có cùng tên, vì vậy, ví dụ: tập lệnh có tên "foobar" sẽ có "foobar.ps1" và "foobar.cmd". Vì vậy, để chạy .ps1, tất cả những gì tôi phải làm là nhấp vào tệp .cmd từ explorer hoặc chạy .cmd từ dấu nhắc lệnh. Tôi sử dụng cùng tên cơ sở vì tệp .cmd sẽ tự động tìm kiếm .ps1 bằng tên riêng của nó.
::====================================================================
:: Powershell script launcher
::=====================================================================
:MAIN
@echo off
for /f "tokens=*" %%p in ("%~p0") do set SCRIPT_PATH=%%p
pushd "%SCRIPT_PATH%"
powershell.exe -sta -c "& {.\%~n0.ps1 %*}"
popd
set SCRIPT_PATH=
pause
Pushd / popd cho phép bạn khởi chạy tệp .cmd từ dấu nhắc lệnh mà không phải thay đổi thư mục cụ thể nơi đặt các tập lệnh. Nó sẽ thay đổi thư mục script sau đó khi hoàn thành quay lại thư mục gốc.
Bạn cũng có thể tắt tạm dừng nếu bạn muốn cửa sổ lệnh biến mất khi tập lệnh kết thúc.
Nếu tập lệnh .ps1 của tôi có các tham số, tôi sẽ nhắc nhở chúng bằng các lời nhắc GUI bằng .NET Forms, nhưng cũng làm cho các tập lệnh đủ linh hoạt để chấp nhận tham số nếu tôi muốn chuyển chúng đi. Bằng cách này, tôi chỉ có thể nhấp đúp vào nó từ Explorer và không phải biết chi tiết về các tham số vì nó sẽ hỏi tôi những gì tôi cần, với hộp danh sách hoặc các biểu mẫu khác.