วิธีเรียกใช้หลายคำสั่งในหนึ่งบรรทัดใน 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"


