ค้นหาเว็บไซต์

วิธีเรียกใช้สคริปต์ PowerShell - อธิบายตัวเลือกทั้งหมดแล้ว


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

มีสองตัวเลือกในการเรียกใช้สคริปต์ PowerShell เพียงแค่จาก cmd โดยใช้ PowerShell ISE หรือแม้แต่งานที่กำหนดเวลาไว้

ในบทความนี้ ฉันจะอธิบายตัวเลือกต่างๆ ในการเรียกใช้สคริปต์ PowerShell นอกจากนี้ ฉันจะช่วยคุณเกี่ยวกับข้อผิดพลาดทั่วไป เช่น “สคริปต์ที่รันอยู่ถูกปิดใช้งานบนระบบนี้”

Fix Running Scripts ถูกปิดใช้งานบนระบบนี้

เราจะเริ่มต้นด้วยข้อผิดพลาดทั่วไปที่ป้องกันไม่ให้ผู้ใช้ส่วนใหญ่เรียกใช้สคริปต์ PowerShell ข้อผิดพลาด “การเรียกใช้สคริปต์ถูกปิดใช้งานบนระบบนี้” ข้อผิดพลาดนี้มีสาเหตุจากนโยบายการดำเนินการของ PowerShell

ตามค่าเริ่มต้น นโยบายการดำเนินการของ PowerShell จะถูกตั้งค่าเป็น จำกัด ซึ่งหมายความว่าสคริปต์ PowerShell จะไม่ทำงานเลย

ดังนั้นในการเรียกใช้สคริปต์ PowerShell เราต้องเปลี่ยนนโยบายการดำเนินการก่อน สำหรับนโยบายนี้ เรามีทางเลือก 2-3 ทาง:

Restricted

ตัวเลือกเริ่มต้น - ไม่อนุญาตให้เรียกใช้สคริปต์ PowerShell ใด ๆ

Unrestricted

สามารถเรียกใช้สคริปต์ใดก็ได้ แสดงคำเตือนสำหรับสคริปต์ที่ดาวน์โหลด

RemoteSigned

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

ByPass

คุณสามารถเรียกใช้สคริปต์ทั้งหมดได้และไม่มีคำเตือนแสดงขึ้น

AllSigned

คุณสามารถเรียกใช้สคริปต์ที่ลงนามจากผู้เผยแพร่ที่เชื่อถือได้เท่านั้น

นโยบายการดำเนินการไม่ได้ได้รับการออกแบบให้เป็นโมเดลความปลอดภัย แต่มีวัตถุประสงค์มากกว่าเพื่อป้องกันการดำเนินการสคริปต์ PowerShell โดยไม่ได้ตั้งใจ ทางเลือกที่ดีที่สุดคือการใช้นโยบาย RemoteSigned ซึ่งจะทำให้คุณไม่สามารถเรียกใช้สคริปต์ที่ดาวน์โหลดมาโดยไม่ได้ตั้งใจได้ (คุณจะต้องยกเลิกการบล็อกก่อน) อ่านเพิ่มเติมเกี่ยวกับนโยบายการดำเนินการในบทความนี้

คำแนะนำ

เรียนรู้เพิ่มเติมเกี่ยวกับการเขียนสคริปต์ PowerShell ของคุณเองในคู่มือฉบับสมบูรณ์นี้

หากต้องการเปลี่ยนนโยบายการดำเนินการใน PowerShell (และแก้ไข "การเรียกใช้สคริปต์ถูกปิดใช้งานบนระบบนี้) เราจำเป็นต้องเริ่ม PowerShell ด้วยสิทธิ์ของผู้ดูแลระบบ:

  1. กด ปุ่ม Windows + X (หรือคลิกขวาที่เมนูเริ่ม)
  2. เลือก Windows PowerShell (ผู้ดูแลระบบ)
  3. เรียกใช้คำสั่งด้านล่าง:
Set-ExecutionPolicy RemoteSigned

ตอนนี้คุณควรจะสามารถเรียกใช้สคริปต์ PowerShell ได้แล้ว

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

มีสองตัวเลือกในการเรียกใช้สคริปต์ PowerShell วิธีที่สะดวกที่สุดคือเพียงคลิกขวาที่ไฟล์แล้วเลือก เรียกใช้ด้วย PowerShell

แต่วิธีนี้มาพร้อมกับข้อเสีย ตามค่าเริ่มต้น สคริปต์ PowerShell ส่วนใหญ่จะปิดหน้าต่าง PowerShell โดยอัตโนมัติเมื่อสคริปต์เสร็จสิ้น ดังนั้นสคริปต์จึงถูกดำเนินการ แต่คุณจะไม่สามารถอ่านข้อผิดพลาดหรือเอาต์พุตใดๆ ได้

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

Read-Host -Prompt "Press Enter to exit"

ใช้ Windows PowerShell

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

เราเริ่มต้นด้วยอย่างหลังโดยเปิด PowerShell ในตำแหน่งที่ถูกต้องจาก explorer ใน explorer ให้ค้นหาสคริปต์ที่คุณต้องการเรียกใช้ ในกรณีนี้คือ c:\temp\powershell

  1. คลิกขวาบนพื้นที่ว่างใน Explorer (ไม่ใช่ในไฟล์ PowerShell)
  2. เลือก เปิดหน้าต่าง PowerShell ที่นี่
    (ใน Windows 11 คุณจะต้องเลือกเปิดใน Windows Terminal)

อย่างที่คุณเห็น PowerShell เริ่มต้นในโฟลเดอร์ c:\temp\PowerShell ตอนนี้เราสามารถเรียกใช้สคริปต์ได้โดยเพียงแค่พิมพ์ชื่อไฟล์ (พิมพ์ตัวอักษรสองสามตัวแรกแล้วกด Tab เพื่อเติมข้อความอัตโนมัติ)

คุณยังสามารถเริ่ม Windows PowerShell ก่อนได้:

  1. คลิกขวาที่เมนูเริ่มต้น (หรือกด ปุ่ม Windows + X)
  2. เลือก Windows PowerShell
  3. นำทาง ไปยังโฟลเดอร์ที่มีสคริปต์อยู่
    cd c:\path\to\script
  4. เรียกใช้ สคริปต์ PowerShell
    .\PowerShellExampleScript.ps1

เรียกใช้สคริปต์ PowerShell จาก CMD

หากคุณได้ลองเรียกใช้ PowerShell จาก cmd คุณอาจสังเกตเห็นว่ามันจะเปิดสคริปต์ในแผ่นจดบันทึก ไม่ใช่ผลลัพธ์ที่เรากำลังมองหาจริงๆ

ในการเรียกใช้สคริปต์ PowerShell เราต้องบอกพรอมต์คำสั่งให้เปิดสคริปต์ด้วย PowerShell เราสามารถใช้ cmd ต่อไปนี้สำหรับสิ่งนี้:

PowerShell c:\path\to\script\PowerShellScript.ps1

โปรดทราบว่าคุณจะต้องระบุเส้นทางแบบเต็มไปยังสคริปต์ PowerShell ผลลัพธ์ของสคริปต์จะแสดงในพร้อมท์คำสั่ง

หากคุณต้องการให้เซสชัน PowerShell เปิดอยู่ คุณสามารถเพิ่มพารามิเตอร์ -noexit ลงในคำสั่ง:

PowerShell -noexit c:\temp\PowerShell\PowerShellExampleScript.ps1

การใช้ PowerShell ISE

เมื่อคุณดาวน์โหลดสคริปต์จากอินเทอร์เน็ต คุณควรตรวจสอบสคริปต์ก่อนเรียกใช้งานเสมอ วิธีง่ายๆ ในการตรวจสอบและเรียกใช้สคริปต์ PowerShell คือการใช้ PowerShell ISE

หากต้องการเปิดไฟล์ PowerShell ในตัวแก้ไข เพียงคลิกขวาที่ไฟล์แล้วเลือก แก้ไข

เมื่อคุณใช้ตัวแก้ไขเป็นครั้งแรก คุณอาจต้องขยายบานหน้าต่างสคริปต์ก่อนเพื่อดูเนื้อหาของสคริปต์ PowerShell:

หากต้องการเรียกใช้สคริปต์ใน PowerShell ISE เพียงคลิกที่ปุ่มเล่นสีเขียวในแถบเครื่องมือ ผลลัพธ์ของสคริปต์จะแสดงในคอนโซล:

เรียกใช้สคริปต์ PowerShell ในฐานะผู้ดูแลระบบ

สคริปต์ PowerShell บางตัวต้องการสิทธิ์ผู้ดูแลระบบเพื่อให้ทำงานได้อย่างถูกต้อง พวกเขาอาจต้องการเข้าถึงโฟลเดอร์ทั้งหมดในไดรฟ์ระบบของคุณ หรือจำเป็นต้องโต้ตอบกับคอมพิวเตอร์โดเมนหรือเซิร์ฟเวอร์อื่นๆ

วิธีที่ง่ายที่สุดในการเรียกใช้สคริปต์ PowerShell ในฐานะผู้ดูแลระบบคือการเริ่ม Windows PowerShell ในฐานะผู้ดูแลระบบ

  1. กด ปุ่ม Windows + X (หรือคลิกขวาที่เมนูเริ่ม)
  2. เลือก Windows PowerShell (ผู้ดูแลระบบ)
  3. คลิก ใช่ บนข้อความแจ้งเตือนการรักษาความปลอดภัยของบัญชีผู้ใช้

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

คุณยังสามารถเรียกใช้สคริปต์ PowerShell ในฐานะผู้ดูแลระบบได้จากบรรทัดคำสั่ง เมื่อคุณเปิด PowerShell เราสามารถเริ่มกระบวนการ PowerShell ใหม่และเรียกใช้ในฐานะผู้ดูแลระบบได้ นอกจากนี้ เรายังระบุไฟล์ที่เราต้องการเรียกใช้ได้อีกด้วย:

# Open a new PowerShell windows with Administrator Privilege
Start-Process PowerShell -Verb runAs

# Run PowerShell script with Administrator Privilege
Start-Process PowerShell -Verb runAs -ArgumentList "-file c:\temp\powershell\powershellexamplescript.ps1"

ห่อขึ้น

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

หากคุณมีคำถามใด ๆ เพียงแค่แสดงความคิดเห็นด้านล่าง ตรวจสอบให้แน่ใจว่าคุณอ่านเพิ่มเติมเกี่ยวกับการตั้งค่าโปรไฟล์ PowerShell ของคุณ

บทความที่เกี่ยวข้อง