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

วิธีเรียกใช้หลายคำสั่งในหนึ่งบรรทัดใน PowerShell และ CMD


ในบันทึกย่อนี้ ฉันจะแสดงวิธีเรียกใช้คำสั่ง cmd หรือ PowerShell หลายคำสั่งในบรรทัดเดียว บางครั้งคุณต้องทำเช่นนี้เมื่อคุณเรียกใช้คำสั่ง PowerShell จากโปรแกรมภายนอก, Windows Task Scheduler, สคริปต์การเข้าสู่ระบบ เมื่อคุณต้องการข้ามนโยบายการดำเนินการ PowerShell หรือเมื่อคุณต้องส่งรหัสไปยังผู้ใช้อย่างรวดเร็วเพื่อวินิจฉัย/แก้ไขปัญหา บนคอมพิวเตอร์ของพวกเขา

การดำเนินการหลายคำสั่งในหนึ่งบรรทัดใน Windows CMD

คุณสามารถใช้

&

cmd โอเปอเรเตอร์เพื่อเรียกใช้คำสั่งหลายคำสั่งต่อกันในบรรทัดเดียว ตัวอย่างเช่น:

net stop wuauserv & net start wuauserv & wuauclt /detectnow

หากคุณต้องการให้ดำเนินการคำสั่งที่สองต่อเมื่อคำสั่งก่อนหน้าสำเร็จ ให้ใช้

&&

รูปแบบ:

ipconfig /flushdns && ipconfig /renew

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

net stop wuauserv6 || net start wuauserv

เรียกใช้คำสั่ง PowerShell หลายคำสั่งในหนึ่งบรรทัด

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

 The ampersand (&) character is not allowed. The & operator is reserved for future use.

แทน

&

เครื่องหมายอัฒภาค (

;

) ใช้ใน PowerShell เพื่อแยกคำสั่งในบรรทัดเดียว:

restart-service wuauserv -verbose; get-process notepad

คำสั่ง PowerShell แบบซับในนี้จะรีสตาร์ทบริการ Windows และหลังจากคำสั่งแรกเสร็จสิ้น คำสั่งจะแสดงรายการข้อมูลเกี่ยวกับกระบวนการ Windows

ตัวอย่างที่นิยมของตัวย่อคำสั่งใน PowerShell คือไพพ์ ซึ่งช่วยให้คุณส่งผ่านผลลัพธ์ของคำสั่งหนึ่งไปยังคำสั่งถัดไปโดยใช้ไปป์ไลน์ ใน PowerShell "

|

สัญลักษณ์ ” ใช้เป็นตัวดำเนินการไปป์ไลน์ นี่คือตัวอย่างคำสั่งไปป์ไลน์:

Get-Service -Name wususerv | Stop-Service

รหัสเดียวกันสามารถเขียนได้หลายบรรทัด:

$service = Get-Service -Name wususerv
$serviceName = $service.Name
Stop-Service -Name $serviceName

ไปป์ไลน์ช่วยลดขนาดโค้ด และโค้ดก็เรียบง่ายและอ่านง่ายขึ้น

ในการเรียกใช้คำสั่ง PowerShell หลายคำสั่งโดยใช้เมนู Start -> Run ให้ใช้รูปแบบด้านล่าง:

powershell -command &"{ipconfig /all; ping a-d.site; pause "Press any key to continue"}"

หากคุณเรียกใช้คำสั่งเดียวกันผ่านคอนโซล PowerShell ให้ใช้ไวยากรณ์ต่อไปนี้:

powershell -command {ipconfig /all; ping a-d.site; pause "Press any key to continue"}

เมื่อเรียกใช้คำสั่ง PowerShell หลายคำสั่งผ่าน Windows Task Scheduler คุณสามารถใช้รูปแบบนี้:

c:\windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command {Get-EventLog -LogName security; ipconfig /all ; get-service servicename}"

ใหม่

&&

และ

|| 

ตัวดำเนินการพร้อมใช้งานใน PowerShell Core เวอร์ชัน 7.x ที่ทันสมัย พวกเขาทำงานเหมือนกับใน cmd

คุณสามารถตรวจสอบเวอร์ชันของ PowerShell ได้โดยการเรียกใช้

$PSVersiontable

นี้

&&

ตัวดำเนินการเรียกใช้คำสั่ง PowerShell ทางด้านขวาหากคำสั่งทางด้านซ้ายสำเร็จ:

Write-host "Hello!" && Write-host "World!"

นี้

||

ใช้ตัวดำเนินการเมื่อคุณต้องการเรียกใช้คำสั่งหากคำสั่งก่อนหน้าส่งกลับข้อผิดพลาด:

get-service servicename || write-host "missing service"

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