วิธีเรียกใช้สคริปต์ PowerShell


711

ฉันจะเรียกใช้สคริปต์ PowerShell ได้อย่างไร

  • ฉันมีสคริปต์ชื่อ myscript.ps1
  • ฉันติดตั้งเฟรมเวิร์กที่จำเป็นทั้งหมดแล้ว
  • ฉันตั้งสิ่งนโยบายการดำเนินการที่
  • ฉันได้ปฏิบัติตามคำแนะนำในหน้าช่วยเหลือ MSDN นี้ แล้วและพยายามเรียกใช้เช่นนั้น: powershell.exe 'C:\my_path\yada_yada\run_import_script.ps1'(มีหรือไม่มี--noexit)

ซึ่งจะส่งคืนอะไรเลยยกเว้นว่าชื่อไฟล์เป็นผลลัพธ์

ไม่มีข้อผิดพลาดไม่มีข้อความไม่มีอะไรเลย โอ้เมื่อฉันเพิ่ม-noexitสิ่งเดียวกันจะเกิดขึ้น แต่ฉันยังคงอยู่ใน PowerShell และต้องออกด้วยตนเอง

ไฟล์. ps1 ควรจะเรียกใช้โปรแกรมและส่งคืนระดับข้อผิดพลาดขึ้นอยู่กับเอาต์พุตของโปรแกรมนั้น แต่ฉันค่อนข้างแน่ใจว่าฉันยังไม่ได้ไปถึงที่นั่น

ผมทำอะไรผิดหรือเปล่า?


2
เริ่มต้นที่คุณจะได้เริ่มต้นpowershell cmdตอนนี้คุณสามารถเรียกใช้myscript.ps1สคริปต์ในรูปแบบที่สามารถเรียกใช้งานได้ใน (ในหน้าต่าง PowerShell) เช่น.\myscript.ps1
parasrish

คำตอบ:


732
  1. เรียกใช้ Windows PowerShell และรอสักครู่เพื่อPSให้พรอมต์คำสั่งปรากฏขึ้น
  2. นำทางไปยังไดเรกทอรีที่สคริปต์ใช้งานอยู่

    PS> cd C:\my_path\yada_yada\ (enter)
  3. รันสคริปต์:

    PS> .\run_import_script.ps1 (enter)

ฉันหายไปอะไร ??

หรือ: คุณสามารถเรียกใช้สคริปต์ PowerShell ได้cmd.exeเช่นนี้

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

ตามโพสต์บล็อกนี้ที่นี่

หรือคุณสามารถเรียกใช้สคริปต์ PowerShell จากแอปพลิเคชัน C # ของคุณ :-)

เรียกใช้งานสคริปต์ PowerShell แบบอะซิงโครนัสจากแอปพลิเคชัน C # ของคุณ


19
ลิงก์โพสต์บล็อกของคุณทำ ฉันต้องใช้powershell -noexit "& "C:\yada_yada\run_import_script.ps1"(สังเกตคำพูดสองคำสามคำ) ฉันไม่เข้าใจจริงๆว่าทำไม แต่ ณ จุดนี้ฉันไม่สนใจจริงๆ :) ขอบคุณมาก!
Pekka

16
ว่าอะไรที่ไม่"&ทำอะไร?
BlueRaja - Danny Pflughoeft

16
ตามtechnet.microsoft.com/en-us/library/ee176949.aspx '&' นั้นมีไว้สำหรับ "หากคุณต้องการรันค่าสตริงนั้น (นั่นคือถ้าคุณต้องการเรียกใช้สคริปต์ที่มีพา ธ ล้อมรอบ เครื่องหมายอัญประกาศคู่) คุณต้องนำหน้าเส้นทางด้วยตัวดำเนินการโทร (เครื่องหมายและ) "
Doug Dawson

29
สิ่งเหล่านี้ไม่เหมาะกับฉันจนกว่าฉันจะข้ามการดำเนินการเริ่มต้นของ PowerShell สำหรับสคริปต์ที่ไม่ได้ลงชื่อที่สร้างขึ้นใหม่ของฉัน เหนือสิ่งอื่นใดสิ่งนี้จำเป็นต้องเริ่มต้น PowerShell ใหม่ในฐานะผู้ดูแลระบบ เห็นด้วยอย่างยิ่งกับ @LukePuplett - มันยอดเยี่ยมมากที่จะทำให้การใช้งานง่ายที่สุดใช้เวลา 20 นาทีในการทำ googling และ futzing และข้อความผิดพลาด! เห็นได้ชัดว่าพวกเหล่านี้ทำงานที่ IBM ... ในยุค 70
Spike0xff

15
ตามที่ระบุไว้ในความคิดเห็นด้านล่างนโยบายการดำเนินการจะต้องมีการหลีกเลี่ยง หนึ่งในรายการที่ไม่ได้กล่าวถึงที่นี่คือวิธีการเรียกใช้สคริปต์ PowerShell จากบรรทัดคำสั่งผ่านในพารามิเตอร์ เมื่อต้องการทำเช่นนี้ให้พิมพ์powershell -executionpolicy bypass ".\myscript.ps1 yadayadayada"
Jim Lahman

229

หากคุณใช้ PowerShell 2.0 ให้ใช้-Fileพารามิเตอร์ของ PowerShell.exe เพื่อเรียกใช้สคริปต์จากสภาพแวดล้อมอื่นเช่น cmd.exe ตัวอย่างเช่น:

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

5
มีวิธีในการเพิ่มพารามิเตอร์ให้กับการร้องขอหรือไม่?
Alexander Groß

11
คุณควรจะสามารถสืบค้นกลับ args หลังจากเส้นทางไฟล์สคริปต์ จากการใช้งาน PowerShell.exe - [-File <filePath> <args>]
Keith Hill

"ไม่สามารถโหลดได้เนื่องจากการทำงานของสคริปต์ถูกปิดใช้งานในระบบนี้โปรดดู" ขอความช่วยเหลือเกี่ยวกับการลงชื่อ "รายละเอียดเพิ่มเติม"
Pavel Vlasov

7
หากคุณยังไม่ได้เปิดใช้งานการดำเนินการสคริปต์ PowerShell ในระบบของคุณให้เพิ่มพารามิเตอร์-ExecutionPolicy Bypass
Keith Hill

4
FYI นี้ใช้งานได้กับ PowerShell 1.0 ในประสบการณ์ของฉัน (เซิร์ฟเวอร์ Windows 2012)
อ่านเพิ่มเติม

189

หากคุณต้องการที่จะเรียกใช้สคริปต์โดยไม่ต้องแก้ไขนโยบายการดำเนินการสคริปต์เริ่มต้นคุณสามารถใช้บายพาสสวิตช์เมื่อเปิดWindows PowerShell

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

11
รวมถึง-nologoตัวเลือกในการกำจัดแบนเนอร์เริ่มต้น
swdev

73

ประเภท:

powershell -executionpolicy bypass -File .\Test.ps1

หมายเหตุ: นี่Test.ps1คือสคริปต์ PowerShell


สิ่งนี้ควรถูกเรียกใช้งานใน PowerShell เนื่องจากpowershell -executionpolicy bypass -File .\Test.ps1สมมติว่าคุณมีไดเรกทอรีการทำงานในปัจจุบันประกอบด้วย Test.ps1
Yeow_Meng

29

ฉันมีปัญหาเดียวกันและฉันพยายามแล้วลอง ... ในที่สุดฉันก็ใช้:

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

และใส่บรรทัดนี้ในแบทช์ไฟล์และใช้งานได้


22

หากคุณมีPowerShell 1.0เพียงอย่างเดียวดูเหมือนว่าจะใช้เคล็ดลับได้ดีพอ:

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

มันท่อไฟล์สคริปต์ไปยังบรรทัดคำสั่ง PowerShell


3
เคล็ดลับที่มีประโยชน์เมื่อนโยบายความปลอดภัยไม่อนุญาตให้เรียกใช้สคริปต์
Aron Lorincz

17

ค่อนข้างง่าย คลิกขวาที่ไฟล์ .ps1 ใน Windows และในเมนูเปลือกคลิกที่Run กับ PowerShell


สิ่งนี้ทำงานเพื่อเรียกใช้สคริปต์อย่างรวดเร็วโดยไม่ต้องเปิดใช้งานการเรียกใช้สคริปต์ด้วยนโยบายการดำเนินการ ขอบคุณ!
b01

นี่คือสิ่งที่ฉันกำลังมองหาขอบคุณ!
Aamol

11

การใช้ไฟล์ 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

หากคุณต้องการเรียกใช้ในฐานะผู้ดูแลระบบ :

  1. สร้างทางลัดที่ชี้ไปที่พรอมต์คำสั่ง (ฉันตั้งชื่อเป็นพรอมต์คำสั่งสำหรับผู้ดูแล)
  2. เปิดคุณสมบัติของทางลัดและไปที่แท็บความเข้ากันได้
  3. ในส่วนระดับสิทธิ์ตรวจสอบให้แน่ใจว่าได้ทำเครื่องหมายในช่องถัดจาก "เรียกใช้โปรแกรมนี้ในฐานะผู้ดูแลระบบ"


10

หากสคริปต์ของคุณมีชื่อพร้อมกับ.ps1ส่วนขยายและคุณอยู่ในหน้าต่าง PowerShell คุณเพียงแค่เรียกใช้./myscript.ps1(สมมติว่าไฟล์อยู่ในไดเรกทอรีทำงานของคุณ)

นี่เป็นเรื่องจริงสำหรับฉันใน Windows 10 ที่มี PowerShell เวอร์ชัน 5.1 อยู่แล้วและฉันไม่คิดว่าฉันจะทำอะไรเพื่อให้เป็นไปได้


2
คำถามนี้จะตอบคำถามได้อย่างไร
Peter Mortensen

4
มันตอบคำถามอย่างแน่นอน: ฉันจะรันสคริปต์ powershell ได้อย่างไร คำตอบ: คอนโซลเริ่มต้น PowerShell แล้วรันสคริปต์ ง่าย. ง่าย ทำงานบน Linux ได้เช่นกัน
Thufir

4
นี่เป็นคำตอบที่แน่นอนและเป็นสิ่งที่ฉันต้องการ อย่างที่myscript.ps1ไม่ได้ผลโยนข้อผิดพลาด แต่ด้วย./การดำเนินการ
Jeff

7
  • ให้เส้นทางของสคริปต์นั่นคือการตั้งค่าเส้นทางโดย cmd:

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

  • เรียกใช้ฟังก์ชันจุดเข้าใช้งานของ PowerShell:

    ตัวอย่างเช่น, $> add or entry_func or main


เรียกใช้คำสั่งของคุณจากพรอมต์คำสั่ง: >$ . 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

7

ในกรณีที่คุณต้องการเรียกใช้สคริปต์ PowerShell ด้วย Windows Task Scheduler โปรดทำตามขั้นตอนด้านล่าง:

  1. สร้างงาน

  2. ตั้งค่าProgram/Scriptเป็นPowershell.exe

  3. ตั้งค่าArgumentsเป็น-File "C:\xxx.ps1"

เป็นคำตอบอื่นฉันจะรันสคริปต์ PowerShell โดยอัตโนมัติโดยใช้ตัวกำหนดเวลางาน Windows ได้อย่างไร .


1

ใช้-Fileพารามิเตอร์ที่ด้านหน้าของชื่อไฟล์ คำพูดทำให้ PowerShell คิดว่ามันเป็นชุดคำสั่ง


1

ฉันมีคำตอบง่ายๆที่ใช้งานได้:

  1. เปิด PowerShell ในโหมดผู้ดูแลระบบ
  2. วิ่ง: set-executionpolicy unrestricted
  3. เปิดหน้าต่าง PowerShell ปกติและเรียกใช้สคริปต์ของคุณ

ฉันพบวิธีแก้ปัญหานี้ตามลิงก์ที่ให้ไว้เป็นส่วนหนึ่งของข้อความแสดงข้อผิดพลาด: เกี่ยวกับนโยบายการดำเนินการ

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.