Cách chạy tập lệnh PowerShell


711

Làm cách nào để chạy tập lệnh PowerShell?

  • Tôi có một tập lệnh có tên myscript.ps1
  • Tôi đã cài đặt tất cả các khung cần thiết
  • Tôi đặt điều chính sách thực thi đó
  • Tôi đã làm theo các hướng dẫn trên trang trợ giúp MSDN này và tôi đang cố gắng chạy nó như vậy: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'(có hoặc không có --noexit)

trả về chính xác không có gì, ngoại trừ tên tệp là đầu ra.

Không có lỗi, không có tin nhắn, không có gì. Ồ, khi tôi thêm -noexit, điều tương tự cũng xảy ra, nhưng tôi vẫn ở trong PowerShell và phải thoát bằng tay.

Tệp .ps1 được cho là chạy chương trình và trả về mức lỗi phụ thuộc vào đầu ra của chương trình đó. Nhưng tôi khá chắc chắn rằng tôi thậm chí còn chưa đến đó.

Tôi đang làm gì sai?


2
Bắt đầu powershellnhư bạn đã bắt đầu cmd. Bây giờ bạn có thể thực thi myscript.ps1tập lệnh như bất kỳ tập lệnh thực thi nào trong đó (trong cửa sổ powershell), tức là.\myscript.ps1
ký sinh

Câu trả lời:


732
  1. Khởi chạy Windows PowerShell và đợi một lát để PSdấu nhắc lệnh xuất hiện
  2. Điều hướng đến thư mục nơi tập lệnh sống

    PS> cd C:\my_path\yada_yada\ (enter)
  3. Thực thi tập lệnh:

    PS> .\run_import_script.ps1 (enter)

Tôi đang thiếu gì ??

Hoặc: bạn có thể chạy tập lệnh PowerShell cmd.exenhư thế này:

powershell -noexit "& ""C:\my_path\yada_yada\run_import_script.ps1""" (enter)

theo bài đăng blog này ở đây

Hoặc thậm chí bạn có thể chạy tập lệnh PowerShell từ ứng dụng C # của mình :-)

Thực thi không đồng bộ các tập lệnh PowerShell từ ứng dụng C # của bạn


19
Liên kết bài viết blog của bạn đã làm điều đó. Tôi phải sử dụng powershell -noexit "& "C:\yada_yada\run_import_script.ps1"(chú ý ba dấu ngoặc kép) Tôi không thực sự hiểu tại sao, nhưng tại thời điểm này, tôi không thực sự quan tâm :) Cảm ơn rất nhiều!
Pekka

16
Chính xác thì "&làm gì?
BlueRaja - Daniel Pflughoeft

16
Theo technet.microsoft.com/en-us/l Library / ee696949.aspx , '&' dành cho "Nếu bạn thực sự muốn thực thi giá trị chuỗi đó (nghĩa là, nếu bạn muốn chạy tập lệnh có đường dẫn được đặt trong báo giá kép) bạn cần mở đầu đường dẫn bằng toán tử Gọi (ký hiệu và). "
Doug Dawson

29
không ai trong số này làm việc cho tôi cho đến khi tôi bỏ qua lệnh xử lý mặc định của powershell cho tập lệnh chưa được tạo mới của tôi. Trong số những thứ khác, điều này đòi hỏi phải khởi động lại powershell As Administrator. Hoàn toàn đồng ý với @LukePuplett - thật tuyệt vời khi làm cho trường hợp sử dụng đơn giản nhất mất 20 phút để làm quen và làm phiền xung quanh. Và các thông báo lỗi! Rõ ràng những kẻ này đã làm việc tại IBM ... vào những năm 70.
Spike0xff

15
Như đã nêu trong một bình luận dưới đây, chính sách thực thi phải được bỏ qua. Một trong những mục không được thảo luận ở đây là làm thế nào để chạy tập lệnh powershell từ một dòng lệnh truyền trong một tham số. Để làm điều này: gõpowershell -executionpolicy bypass ".\myscript.ps1 yadayadayada"
Jim Lahman

229

Nếu bạn đang sử dụng PowerShell 2.0, hãy sử dụng -Filetham số của PowerShell.exe để gọi tập lệnh từ môi trường khác, như cmd.exe. Ví dụ:

Powershell.exe -File C:\my_path\yada_yada\run_import_script.ps1

5
Có cách nào để thêm tham số cho một lời mời như vậy không?
Alexander Groß

11
Bạn chỉ có thể theo dõi các đối số sau đường dẫn tệp tập lệnh. Từ việc sử dụng PowerShell.exe - [-File <filePath> <args>]
Keith Hill

"không thể được tải vì việc thực thi tập lệnh bị vô hiệu hóa trên hệ thống này. Vui lòng xem" get-help about_signing "để biết thêm chi tiết."
Pavel Vlasov

7
Nếu bạn chưa kích hoạt thực thi tập lệnh PowerShell trên hệ thống của mình, hãy thêm tham số-ExecutionPolicy Bypass
Keith Hill

4
FYI này cũng hoạt động cho PowerShell 1.0 theo kinh nghiệm của tôi (Máy chủ Windows 2012)
knocte

189

Nếu bạn muốn chạy tập lệnh mà không sửa đổi chính sách thực thi tập lệnh mặc định, bạn có thể sử dụng công tắc bỏ qua khi khởi chạy Windows PowerShell .

powershell [-noexit] -executionpolicy bypass -File <Filename>

11
Ngoài ra, bao gồm -nologotùy chọn để thoát khỏi biểu ngữ khởi động
swdev

73

Kiểu:

powershell -executionpolicy bypass -File .\Test.ps1

LƯU Ý: Đây Test.ps1là tập lệnh PowerShell.


Điều này nên được thực thi trong một quyền hạn như powershell -executionpolicy bypass -File .\Test.ps1giả sử thư mục làm việc hiện tại của bạn có chứa Test.ps1
Yeow_Meng

29

Tôi đã có cùng một vấn đề, và tôi đã thử và thử ... Cuối cùng tôi đã sử dụng:

powershell.exe -noexit "& 'c:\Data\ScheduledScripts\ShutdownVM.ps1'"

Và đặt dòng này trong một tệp bó, và điều này hoạt động.


22

Nếu bạn chỉ có PowerShell 1.0 , điều này dường như thực hiện thủ thuật đủ tốt:

powershell -command - < c:\mypath\myscript.ps1

Nó đặt tệp script vào dòng lệnh PowerShell.


3
Thủ thuật hữu ích khi chính sách bảo mật không cho phép thực thi tập lệnh.
Aron Lorincz

17

Khá dễ. Nhấp chuột phải vào tệp .ps1 trong Windows và trong menu shell, nhấp vào Run with PowerShell .


Điều này hoạt động để nhanh chóng chạy một tập lệnh mà không phải kích hoạt thực thi tập lệnh với chính sách thực thi. Cảm ơn!
b01

Đây là những gì tôi đang tìm kiếm, cảm ơn!
Aamol

11

Sử dụng tệp cmd (BAT):

@echo off
color 1F
echo.

C:\Windows\system32\WindowsPowerShell\v1.0\powershell.exe -ExecutionPolicy Bypass -File "PrepareEnvironment.ps1"

:EOF
echo Waiting seconds
timeout /t 10 /nobreak > NUL

Nếu bạn cần chạy với tư cách quản trị viên :

  1. Tạo một lối tắt chỉ vào dấu nhắc lệnh (Tôi đặt tên là Dấu nhắc lệnh quản trị)
  2. Mở thuộc tính của phím tắt và chuyển đến tab Tương thích
  3. Trong phần Cấp đặc quyền, hãy đảm bảo hộp kiểm bên cạnh "Chạy chương trình này với tư cách quản trị viên" được chọn


10

Nếu tập lệnh của bạn được đặt tên với .ps1tiện ích mở rộng và bạn đang ở trong cửa sổ PowerShell, bạn chỉ cần chạy ./myscript.ps1(giả sử tệp nằm trong thư mục làm việc của bạn).

Dù sao thì điều này cũng đúng với Windows 10 với PowerShell phiên bản 5.1 và tôi không nghĩ mình đã làm gì để biến nó thành có thể.


2
Làm thế nào để trả lời câu hỏi này?
Peter Mortensen

4
nó hoàn toàn trả lời câu hỏi: làm thế nào để tôi chạy một kịch bản powershell? Trả lời: khởi động giao diện điều khiển powershell, sau đó thực thi tập lệnh. dễ dàng. đơn giản. Hoạt động trên Linux cũng có.
Thufir

4
Điều này hoàn toàn trả lời câu hỏi, và chính xác là những gì tôi đang tìm kiếm. như myscript.ps1không hoạt động, đã gây ra lỗi, nhưng với ./nó đang thực thi.
Jeff

7
  • Đưa ra đường dẫn của tập lệnh, nghĩa là, thiết lập đường dẫn theo cmd:

    $> . c:\program file\prog.ps1

  • Chạy chức năng điểm vào của PowerShell:

    Ví dụ, $> add or entry_func or main


Chạy các lệnh của bạn từ dấu nhắc cmd: >$ . c:\program file\prog.ps1 '.' is not recognized as an internal or external command, operable program or batch file.>$ add or entry_func or main 'add' is not recognized as an internal or external command, operable program or batch file.
Suncat2000


1

Sử dụng -Filetham số ở phía trước tên tệp. Các trích dẫn làm cho PowerShell nghĩ rằng đó là một chuỗi các lệnh.


1

Tôi có một câu trả lời rất đơn giản mà hoạt động:

  1. Mở PowerShell trong chế độ quản trị viên
  2. Chạy: set-executionpolicy unrestricted
  3. Mở cửa sổ PowerShell thông thường và chạy tập lệnh của bạn.

Tôi tìm thấy giải pháp này theo liên kết được đưa ra như một phần của thông báo lỗi: Giới thiệu về Chính sách thực thi

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.