2010-01-09 42 views
489

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

  • Tôi có một kịch bản có tên myscript.ps1
  • tôi có tất cả các khuôn khổ cần thiết được cài đặt
  • tôi thiết rằng execution policy điều
  • Tôi đã theo các hướng dẫn trên this MSDN help page và đang cố gắng để chạy nó như như vậy: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1' (với hoặc withot --noexit)

trả về chính xác không có gì, ngoại trừ việc tên tệp là đầu ra. Không có lỗi, không có thông báo, không có gì. Oh, 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 khỏi thủ công.

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 tôi thậm chí không đến đó.

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

+0

Bắt đầu 'powershell' như bạn đã có thể bắt đầu' cmd'. Bây giờ bạn có thể thực thi kịch bản 'myscript.ps1' như bất kỳ tệp thực thi nào có trong (trong cửa sổ powershell), tức là'. \ Myscript.ps1' – parasrish

Trả lời

499
  1. Launch Windows PowerShell, và chờ một lát cho dấu nhắc lệnh PS xuất hiện
  2. Điều hướng đến thư mục chứa kịch bản sống

    PS> cd C:\my_path\yada_yada\ (enter) 
    
  3. Thực thi kịch bản:

    PS> .\run_import_script.ps1 (enter) 
    

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

Hoặc: bạn có thể chạy các kịch bản PowerShell từ cmd.exe như thế này:

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

theo này blog post here

Hoặc thậm chí bạn có thể chạy kịch bản Powershell của bạn từ ứng dụng C# của bạn :-)

Asynchronously execute PowerShell scripts from your C# application

+0

Điều này thực sự hiệu quả, nhưng tôi cần thực hiện điều này từ bên trong một tệp lô. Rõ ràng, cách gọi của tôi là 'powershell.exe' và sau đó tập tin kịch bản là bằng cách nào đó hơi say lên. Bạn có bất kỳ ý tưởng làm thế nào để sửa đổi nó? –

+14

Liên kết bài đăng trên 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ú ý đến dấu ngoặc kép * ba *) Tôi không 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! –

+11

Chính xác thì '' & 'làm gì? –

160

Nếu bạn đang sử dụng PowerShell 2.0, hãy sử dụng tham số -File của PowerShell.exe để gọi một kịch bản từ một môi trường như cmd.exe ví dụ:

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

Có cách nào để thêm tham số vào lời gọi như vậy không? –

+8

Bạn chỉ có thể theo dõi arg sau đường dẫn tệp tập lệnh. Từ việc sử dụng PowerShell.exe - [-File ] –

+0

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

24

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

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

Và đưa dòng này trong một tập tin thực thi, và nó hoạt động.

18

Nếu bạn chỉ có PowerShell 1.0, điều này dường như làm các trick cũng đủ:

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

Nó Ống file script vào dòng lệnh PowerShell.

+3

Bí quyế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. –

128

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

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

Ngoài ra, hãy bao gồm tùy chọn '-nologo' để loại bỏ biểu ngữ khởi động – swdev

5
  • Đưa đường dẫn của kịch bản, có nghĩa là, thiết lập con đường bằng cmd:

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

  • Chạy chức năng điểm nhập cảnh của PowerShell:

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

6

Sử dụng cmd (BAT) file:

@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 Run as administrator:

  1. Tạo một shortcut chỉ vào dấu nhắc lệnh (tôi đặt tên nó Administrative Command Prompt)
  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 như một quản trị viên" được chọn
35

Loại:

powershell -executionpolicy bypass -File .\Test.ps1

LƯU Ý: Đây Test.ps1 là kịch bản PowerShell.

+0

Điều này sẽ được thực hiện trong một quyền hạn như' powershell -executionpolicy bypass -File. \ Test.ps1' giả định rằng thư mục làm việc hiện tại của bạn chứa Test.ps1 –

3

Khá dễ dàng. Nhấp chuột phải vào tệp .ps1 trong Windows và trong trình đơn trình đơn, nhấp vào Chạy bằng PowerShell.

+0

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

2

Nếu tập lệnh của bạn có tên là mở rộng .ps1 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).

Điều này cũng đúng đối với tôi trên Windows 10 với PowerShell phiên bản 5.1, và tôi không nghĩ mình đã làm bất cứ điều gì để làm cho nó có thể.

+1

Cách này trả lời câu hỏi? –

+0

nó hoàn toàn trả lời câu hỏi: làm thế nào để chạy một kịch bản PowerShell? trả lời: khởi động bàn điều khiển PowerShell, sau đó thực thi kịch bản. dễ dàng. đơn giản. Cũng hoạt động trên Linux. – Thufir

6

Một cách dễ dàng là sử dụng PowerShell ISE, kịch bản mở, chạy và gọi script của bạn, chức năng ...

Enter image description here

Các vấn đề liên quan