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

การเรียนรู้ศิลปะการเรียกใช้สคริปต์ PowerShell จากไฟล์แบตช์: คู่มือที่ครอบคลุม


หัวข้อ: 5 ขั้นตอนสำคัญในการเรียกใช้สคริปต์ PowerShell จากไฟล์แบตช์

บทนำ: เรื่องราวของสองสคริปต์

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

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

1. การเตรียมสภาพแวดล้อมของคุณ

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

powershell -Command “Get-Host”

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

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

Set-ExecutionPolicy RemoteSigned

2. การสร้างสคริปต์ PowerShell

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

# Message.ps1
$message = “PowerShell is working within the batch file.”
Write-Host $message

หลังจากสร้างสคริปต์แล้ว ให้บันทึกด้วยนามสกุลไฟล์ _.ps1_ สิ่งนี้จะทำเครื่องหมายอาร์ติแฟกต์ว่าเป็นสคริปต์ PowerShell และรับรองว่าล่ามจะจดจำได้อย่างเหมาะสม

3. การสร้างไฟล์แบตช์

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

@echo off
powershell.exe -ExecutionPolicy Bypass -File “C:pathtoyourMessage.ps1”
pause

แทนที่ C:pathtoyour ด้วยเส้นทางจริงที่มีสคริปต์ PowerShell ของคุณอยู่ บันทึกไฟล์นี้ด้วยนามสกุล _.bat_ หรือ _.cmd_ ซึ่งแสดงถึงวัตถุประสงค์ของไฟล์แบทช์

4. ทำความเข้าใจกับคำสั่งแบทช์

คุณอาจสงสัยเกี่ยวกับความซับซ้อนของคำสั่งแบตช์ที่ใช้ในการเรียกใช้สคริปต์ PowerShell ของคุณ ให้เราเจาะลึกลงไปในองค์ประกอบของมัน:

* powershell.exe: องค์ประกอบนี้เริ่มต้นตัวแปล PowerShell
* -ExecutionPolicy Bypass: ด้วยการรวมแฟล็กนี้ เราจะแทนที่นโยบายการดำเนินการทั้งระบบชั่วคราวสำหรับ การเรียกใช้สคริปต์เฉพาะนี้ ซึ่งช่วยให้เราสามารถหลีกเลี่ยงข้อจำกัดที่อาจเกิดขึ้นได้โดยไม่ต้องเปลี่ยนแปลงการตั้งค่าส่วนกลาง
* -ไฟล์ “C:pathtoyourMessage.ps1″: แฟล็กนี้ระบุไฟล์สคริปต์ PowerShell ที่จะดำเนินการ พร้อมด้วยไฟล์สคริปต์แบบเต็ม เส้นทาง.

5. ดำเนินการโซลูชันแบบรวมของคุณ

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

เมื่อดำเนินการสำเร็จ ข้อความ PowerShell ของคุณควรแสดงขึ้น เพื่อพิสูจน์ว่าภาษาสคริปต์เหล่านี้มีความสอดคล้องกัน

สรุป: พลังของการเขียนสคริปต์ยูไนเต็ด

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

วิธีเรียกใช้ Batch File ในฐานะผู้ดูแลระบบโดยไม่ต้องแจ้งใน Windows 10

★วิธีสร้าง: ไฟล์แบทช์ที่ยอดเยี่ยม★

เราจะรันคำสั่ง PowerShell จากแบตช์ไฟล์ได้อย่างไร

การดำเนินการคำสั่ง PowerShell จากแบตช์ไฟล์เป็นเทคนิคที่มีประโยชน์สำหรับการรันสคริปต์ PowerShell หรือคำสั่งโดยตรงจากภายในบริบทของไฟล์แบตช์ (.bat) โดยทำตามขั้นตอนเหล่านี้:

1. เปิดโปรแกรมแก้ไขข้อความ เช่น Notepad และสร้างไฟล์ใหม่ที่มีนามสกุล .bat.
2. เขียนบรรทัดต่อไปนี้ที่จุดเริ่มต้นของไฟล์:

@echo off

บรรทัดนี้ปิดใช้งานการแสดงแต่ละคำสั่งในเอาต์พุต

3. ในการรันคำสั่ง PowerShell จากแบตช์ไฟล์ ให้ใช้ไวยากรณ์ต่อไปนี้:

powershell -command “& { Your-PowerShell-Command }”

แทนที่ Your-PowerShell-Command ด้วยคำสั่ง PowerShell จริงที่คุณต้องการดำเนินการ

4. บันทึกไฟล์และดับเบิลคลิกเพื่อเรียกใช้แบตช์ไฟล์ ซึ่งจะดำเนินการตามคำสั่ง PowerShell ที่ระบุ

ตัวอย่างเช่น หากคุณต้องการสร้างโฟลเดอร์ใหม่ชื่อ ตัวอย่าง โดยใช้ PowerShell จากภายในไฟล์แบตช์ เนื้อหาของไฟล์แบตช์ควรมีลักษณะดังนี้:

@echo off
powershell -command “& { New-Item -ItemType Directory -Path .example }”

เมื่อคุณเรียกใช้แบตช์ไฟล์ โฟลเดอร์ใหม่ชื่อ example จะถูกสร้างขึ้นในไดเร็กทอรีเดียวกันกับไฟล์แบตช์

ฉันจะรันสคริปต์ PowerShell โดยใช้แบตช์ไฟล์ได้อย่างไร

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

1. สร้างไฟล์ข้อความใหม่และบันทึกด้วยนามสกุล .bat หรือ .cmd
2. ในแบตช์ไฟล์ ให้ใช้ไวยากรณ์ต่อไปนี้:

@echo off
PowerShell.exe -ExecutionPolicy Bypass -File “Path_to_your_PowerShell_script.ps1”

แทนที่ Path_to_your_PowerShell_script.ps1 ด้วยเส้นทางจริงไปยังสคริปต์ PowerShell ของคุณ

3. บันทึกไฟล์แบตช์
4. ดับเบิลคลิกที่ไฟล์แบตช์เพื่อรัน หรือดำเนินการจากพรอมต์คำสั่ง

สิ่งนี้จะเรียกใช้สคริปต์ PowerShell ที่ระบุโดยใช้คำสั่ง PowerShell.exe แฟล็ก -ExecutionPolicy Bypass ใช้เพื่ออนุญาตให้สคริปต์ทำงานโดยไม่ต้องเปลี่ยนแปลงการตั้งค่านโยบายการดำเนินการทั้งระบบ

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

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

1. สร้างสคริปต์ PowerShell (เช่น MyScript.ps1) ที่มีคำสั่งที่คุณต้องการเรียกใช้

2. สร้างไฟล์แบตช์ (เช่น RunScript.bat) โดยมีเนื้อหาดังต่อไปนี้:

@echo off
PowerShell.exe -NoProfile -ExecutionPolicy Bypass -Command “& {Start-Process PowerShell.exe -ArgumentList ‘-NoProfile -ExecutionPolicy Bypass -File “”MyScript.ps1″”‘ -Credential (Get-Credential) -NoNewWindow}”

ไฟล์แบตช์นี้รันสคริปต์ PowerShell MyScript.ps1 โดยใช้ข้อมูลประจำตัวผู้ใช้ที่ให้ไว้ ต่อไปนี้เป็นองค์ประกอบสำคัญที่อธิบาย:

- PowerShell.exe -NoProfile -ExecutionPolicy Bypass : คำสั่งนี้เริ่มเซสชัน PowerShell ใหม่โดยไม่ต้องโหลดโปรไฟล์ใดๆ และตั้งค่านโยบายการดำเนินการเป็นบายพาส ทำให้สคริปต์ PowerShell ทำงานได้

- Start-Process PowerShell.exe : cmdlet นี้เริ่มอินสแตนซ์อื่นของ PowerShell เพื่อเรียกใช้สคริปต์

- -ArgumentList : พารามิเตอร์นี้ระบุอาร์กิวเมนต์สำหรับอินสแตนซ์ PowerShell ใหม่ ซึ่งรวมถึงการโหลดไฟล์สคริปต์ (MyScript.ps1) และการข้าม นโยบายการดำเนินการ

- -Credential (Get-Credential) : พารามิเตอร์นี้จะแจ้งให้ระบุข้อมูลรับรองผู้ใช้ที่คุณต้องการใช้เพื่อเรียกใช้สคริปต์ ป้อนชื่อผู้ใช้และรหัสผ่านของผู้ใช้ที่ต้องการเมื่อได้รับแจ้ง

- -NoNewWindow : สวิตช์นี้ป้องกันการเปิดหน้าต่างใหม่สำหรับอินสแตนซ์ PowerShell

3. เรียกใช้ไฟล์ RunScript.bat โดยดับเบิลคลิกหรือเรียกใช้ใน command prompt ไฟล์แบตช์จะเปิดพรอมต์ PowerShell เพื่อขอข้อมูลรับรองของผู้ใช้ จากนั้นจะดำเนินการสคริปต์ MyScript.ps1 โดยใช้ข้อมูลประจำตัวที่ให้ไว้

ฉันจะรันสคริปต์ PowerShell จากไฟล์ได้อย่างไร

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

& “PathToFileyour_script.ps1”

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

Set-ExecutionPolicy RemoteSigned

ตอนนี้คุณควรจะสามารถรันสคริปต์ PowerShell ของคุณได้โดยไม่มีปัญหา

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

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

1. สร้างสคริปต์ PowerShell (.ps1) ที่ยอมรับพารามิเตอร์ ตัวอย่างเช่น เรามาสร้างสคริปต์ชื่อ SampleScript.ps1 โดยมีเนื้อหาดังต่อไปนี้:

param (
[string]$Name,
[int]$Age
)
Write-Host “Hello, my name is $Name and I am $Age years old.”

ในตัวอย่างนี้ สคริปต์ยอมรับพารามิเตอร์สองตัว ได้แก่ $Name และ $Age

2. สร้างแบตช์ไฟล์ (.bat) เพื่อรันสคริปต์ PowerShell ในแบตช์ไฟล์ ให้ใช้ไวยากรณ์ต่อไปนี้:

@echo off
powershell.exe -ExecutionPolicy Bypass -File “SampleScript.ps1” -Name “John Doe” -Age 30

แทนที่ John Doe และ 30 ด้วยค่าที่ต้องการสำหรับพารามิเตอร์ บรรทัดนี้รันสคริปต์ PowerShell และข้ามนโยบายการดำเนินการเพื่อให้สคริปต์ทำงานได้

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

เมื่อดำเนินการไฟล์แบตช์ ไฟล์จะเริ่ม PowerShell ด้วยพารามิเตอร์ที่ระบุและเรียกใช้สคริปต์ SampleScript.ps1 ในตัวอย่างนี้ สคริปต์จะแสดงข้อความ: สวัสดี ฉันชื่อ John Doe และฉันอายุ 30 ปี

อย่าลืมแทนที่ John Doe และ 30 ด้วยค่าจริงที่คุณต้องการส่งเป็นพารามิเตอร์ไปยังสคริปต์ PowerShell ของคุณ

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

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

ต่อไปนี้คือตัวอย่างวิธีเรียกใช้สคริปต์ PowerShell จากไฟล์แบตช์:

@echo off
PowerShell.exe -NoProfile -ExecutionPolicy Bypass -Command “& { . ‘pathtoyourscript.ps1’; }”

-NoProfile: พารามิเตอร์นี้ช่วยให้แน่ใจว่า PowerShell จะไม่โหลดโปรไฟล์ของผู้ใช้ ซึ่งสามารถปรับปรุงประสิทธิภาพการเริ่มต้นระบบได้

-ExecutionPolicy Bypass: พารามิเตอร์นี้อนุญาตให้สคริปต์ทำงานโดยไม่ได้รับผลกระทบจากนโยบายการดำเนินการของระบบ อาจมีประโยชน์หากสคริปต์เชื่อถือได้ แต่นโยบายการดำเนินการป้องกันไม่ให้สคริปต์ทำงาน

-คำสั่ง <รหัส>& { 'pathtoyourscript.ps1'; : ส่วนนี้กำหนดสคริปต์ที่จะดำเนินการ เส้นทางสคริปต์ควรอยู่ในเครื่องหมายคำพูดเดี่ยวเพื่อหลีกเลี่ยงปัญหาเกี่ยวกับอักขระพิเศษหรือการเว้นวรรค สคริปต์ถูกรวมไว้ในบล็อกสคริปต์ (แสดงโดย {}) และดำเนินการโดยใช้ตัวดำเนินการ & (โทร)

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

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

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

1. ใช้เส้นทางแบบเต็ม: ใช้เส้นทางแบบเต็มไปยังทั้งไฟล์ปฏิบัติการ PowerShell และไฟล์สคริปต์เสมอ เพื่อหลีกเลี่ยงปัญหาที่เกี่ยวข้องกับไดเรกทอรีปัจจุบันหรือตัวแปรสภาพแวดล้อม

2. นโยบายการดำเนินการ: ตรวจสอบให้แน่ใจว่านโยบายการดำเนินการของ PowerShell อนุญาตให้เรียกใช้สคริปต์ได้ คุณสามารถข้ามนโยบายการดำเนินการได้โดยใช้พารามิเตอร์ -ExecutionPolicy Bypass เมื่อเรียก PowerShell

3. การจัดการข้อผิดพลาด: เพิ่มการจัดการข้อผิดพลาดในสคริปต์ PowerShell ของคุณ เช่น การใช้บล็อก try-catch เพื่อบันทึกข้อผิดพลาดใดๆ ที่เกิดขึ้นและเขียนลงในไฟล์บันทึกหรือจอแสดงผล พวกเขา.

4. รหัสออก: ใช้รหัสออกในสคริปต์ของคุณเพื่อระบุความสำเร็จหรือความล้มเหลว และตรวจสอบให้แน่ใจว่าได้บันทึกค่านี้ในไฟล์แบตช์เพื่อประเมินความสำเร็จของการทำงานของสคริปต์

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

@echo off
set PS_SCRIPT=”C:pathtoyourpowershellscript.ps1″
set LOG_FILE=”C:pathtooutputlogfile.txt”
set ERROR_FILE=”C:pathtoerrorerrorfile.txt”
PowerShell.exe -NoProfile -ExecutionPolicy Bypass -File %PS_SCRIPT% 1> %LOG_FILE% 2> %ERROR_FILE%
if %errorlevel% equ 0 (
echo Script executed successfully
) else (
echo Error: see %ERROR_FILE% for details
)

นอกจากนี้ ให้พิจารณาคำแนะนำเหล่านี้เมื่อทำงานกับ PowerShell และไฟล์แบตช์:

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

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