อื่นหากอยู่ใน PowerShell | ตัวดำเนินการแบบมีเงื่อนไขหลายตัวหรือตัวเดียวใน Else If
ข้อมูลเบื้องต้นเกี่ยวกับ Else If ใน PowerShell
เงื่อนไข if/else เป็นเงื่อนไขที่มีประโยชน์ที่สุดในภาษาสคริปต์ และคุณอาจต้องการใช้หลายครั้งในขณะที่เขียนสคริปต์ ถ้าเงื่อนไขแรกในถ้าคำสั่งล้มเหลว ขั้นที่สองจะเป็นคำสั่ง ElseIf InElseIfblock คุณยังสามารถระบุเงื่อนไขหรือค่าทดสอบของคุณได้ หากสองเงื่อนไขข้างต้นล้มเหลว บล็อกสุดท้ายจะเป็น Else ซึ่งไม่จำเป็นต้องตรวจสอบเงื่อนไขใดๆ และจะดำเนินการโดยตรงเมื่อคำสั่ง If และ ElseIf ล้มเหลว
ไวยากรณ์
if (condition) {<Statement List 1>}
elseif (condition) {<Statement List 2>}
else {<Statement List 3>}จะใช้เงื่อนไข IF ได้อย่างไร?
ด้านล่างนี้เป็นคำอธิบายโดยละเอียดของเงื่อนไข if:
1. ผังงานสำหรับเงื่อนไข If
หากเงื่อนไขทำงานอย่างไร
ดังแสดงในแผนภาพข้างต้น หากคำสั่งนั้นมีเงื่อนไข หากเงื่อนไขเป็นไปตามที่กำหนด ก็จะทำการบล็อก หากมีคำสั่ง if หลายคำสั่ง สคริปต์จะตรวจสอบแต่ละเงื่อนไขของคำสั่ง if และดำเนินการตามแต่ว่าเงื่อนไขใดเป็นจริง
หากมีการใช้คำสั่งเพื่อประเมินเงื่อนไข หากเงื่อนไขสำเร็จคำสั่ง block จะทำงาน คุณสามารถระบุเงื่อนไขได้มากกว่าหนึ่งเงื่อนไขในคำสั่ง If ทั้งนี้ขึ้นอยู่กับตัวดำเนินการที่ใช้ (การเปรียบเทียบ บูลีน ระดับบิต) คำสั่งประเมินเงื่อนไข
ตัวอย่าง
รหัส:
if((Get-Service Spooler).Status -eq "Running"){
Write-Output "Spooler Service is Running"
}
if((Get-Service Spooler).Status -eq "Stopped"){
Write-Output "Spooler Service is Stopped"
}
if((Get-Service Power).Status -eq "Running"){
Write-Output "Power Service is running"
}เอาต์พุต:
คำอธิบาย: ในตัวอย่างข้างต้น สองเงื่อนไข (แรกและสุดท้าย) กำลังจะได้รับการตอบสนอง ดังนั้นจึงดำเนินการสองบล็อก แต่ตามมาตรฐานการเขียนโปรแกรมหลายคำสั่ง If ไม่แนะนำให้ใช้เนื่องจากต้องใช้เวลาดำเนินการนานกว่า แต่เราสามารถใช้บล็อก If/elseif/else แทนได้
2. คำสั่ง If ที่ซ้อนกัน
ไวยากรณ์:
if (condition) {
if (condition1) {"Execution Statement1"}
if (condition2) {
"Execution Statement2"
if (condition3) {"Execution Statement3"}
}
}ตัวอย่าง
รหัส #1: พิจารณาตัวอย่างด้านล่างสำหรับคำสั่ง If ที่ซ้อนกัน
$srv = Get-Service Spooler
if($srv){
if($srv.Status -eq "Running"){"Service is Running"}
if($srv.Status -eq "Stopped"){"Service is Stopped"}
}รหัส #2:
$srv = Get-Service Spooler
if($srv){
if($srv.Status -eq "Running"){"Service is Running"}
if($srv.Status -eq "Stopped"){"Service is Stopped"}
}เอาต์พุต:
คำอธิบาย: ในตัวอย่างนี้ อันดับแรกจะตรวจสอบว่ามีบริการอยู่หรือไม่ และหากมีบริการอยู่ ก็จะเข้าสู่บล็อกและตรวจสอบอีกครั้งว่าบริการกำลังทำงานหรือหยุดอยู่ และดำเนินการบล็อกตามนั้น นี่เป็นตัวอย่างที่สมบูรณ์แบบของคำอธิบายของ NestedIfloop
ถ้า /else ทำงานใน PowerShell
การเขียนคำสั่ง if หลายรายการไม่ใช่ความคิดที่ดีหากตรงตามเงื่อนไขแล้ว เพื่อให้เราสามารถใช้คำสั่ง else ได้หากมีเงื่อนไขเดียวที่ต้องตรวจสอบ
ไวยากรณ์
if (condition1) {"Execution Statement1"}
else {"Execution Statement2"}ผังงานเงื่อนไข If/else
ตัวอย่าง
รหัส:
Stop-Service Spooler
if((Get-Service Spooler).Status -eq "Running"){"Spooler service is running"}
else{"Spooler service is stopped"}ในตัวอย่างข้างต้น บริการ Spooler หยุดทำงาน ดังนั้นบล็อกอื่นจึงถูกดำเนินการโดยไม่มีการตรวจสอบเงื่อนไขเพิ่มเติม
เอาต์พุต:
คำสั่ง If /else ที่ซ้อนกัน
ด้านล่างนี้เป็นตัวอย่างของคำสั่ง if ที่ซ้อนกัน:
รหัส: #1
if (condition1) {
if (condition2) {"Execution Statement2"}
else{"Execution Statement2"}
}
else{
"Execution Statement1"
if (condition3) {"Execution Statement3"}
else {"Execution Statement3"}
}รหัส: #2
$srv = Get-Service Spooler -ErrorAction Ignore
if($srv){
if($srv.Status -eq "Running"){"Spooler Service is running"}
else{"Spooler Service is not running"}
}
Else{
Write-Output "There is no service with name Spooler"
}เอาต์พุต:
ถ้า/elseif /else ใช้งาน PowerShell
ในตัวอย่างข้างต้น เราพบว่าเงื่อนไข if และ else ไม่เป็นที่พอใจหากเรามีเงื่อนไข if หลายเงื่อนไข ดังนั้นจึงตรวจสอบเงื่อนไข If ทุกเงื่อนไข และเมื่อเงื่อนไขไม่เป็นความจริง คำสั่ง else จะถูกดำเนินการ เพื่อให้เป็นไปตามเกณฑ์เวลาดำเนินการ เราจึงมีคำสั่ง elseif อีกคำสั่งหนึ่งที่เราสามารถใช้ได้
ไวยากรณ์:
if (condition1) {"Execution Statement1"}
elseif (condition2) {"Execution Statement2"}
elseif (condition2) {"Execution Statement3"}
else {"Execution Statement4"}ผังงานถ้า/elseif/ifเงื่อนไข
ตัวอย่าง
รหัส:
$srv = Get-Service Spooler -ErrorAction Ignore
if($srv.Status -eq "Running"){
"Spooler Service is running"
}
elseif($srv.Status -eq "Stopped"){
"Spooler Service is stopped"
}
else{
"Spooler service is in Start Pending or Stopped pending status"
}เอาต์พุต:
คำสั่ง If/elseif /else ที่ซ้อนกัน
ด้านล่างนี้คือตัวอย่างการซ้อนคำสั่ง if:
รหัส:
[int]$num = Read-Host "Enter Number"
if($num -ge 10){
if($num -lt 15){"Number is less than 15"}
elseif(($num -ge 15) -and ($num -lt 20)){
"Number is between 15 and 20"
}
else{"Number is greater than 20"}
}
elseif(($num -ge 5) -and ($num -lt 10)){
"Number is greater than 5 and less than 10"
}
else{
if($num -gt 2){"Number is greater than 2"}
else{"Number is less than 2"}
}เอาต์พุต:
หลายเงื่อนไข
คุณสามารถใช้การตรวจสอบหลายเงื่อนไขภายในคำสั่ง If หรือ ElseIf คำสั่งเดียว และขึ้นอยู่กับตัวดำเนินการที่คุณใช้ตามความต้องการของคุณ ตัวอย่างเช่น,
รหัส #1
$srv = Get-Service Spooler
if(($srv.Status -eq "Stopped") -and ($srv.StartType -eq "Automatic")){
"Spooler Service Starttyp is Automatic but in Stopped status"
}
else{"Service is Running or Start type is not Automatic"}เอาต์พุต:
รหัส #2
$srv = Get-Service Spooler
if(($srv.Status -eq "Stopped") -or ($srv.Status -eq "Running")){
"Spooler Service is in Stopped or Running State"
}
else{"Spooler Service is StopPending or StartPending State"}เอาต์พุต:
เช่นเดียวกับตัวอย่างข้างต้น คุณสามารถใช้ตัวดำเนินการตามเงื่อนไขหลายตัวหรือตัวเดียวในเงื่อนไข If หรือ elseif ได้











