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

อื่นหากอยู่ใน 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 ได้

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