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

วิธีใช้ตัวดำเนินการแบบลอจิคัลใน PowerShell


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

ตัวดำเนินการลอจิคัลของ PowerShell

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

รายการต่อไปนี้แสดงตัวดำเนินการเชิงตรรกะของ PowerShell ที่พร้อมใช้งาน

Logical Operator
-not
-and
-or
-xor

เชื่อมต่อกับ Exchange Online PowerShell

หากต้องการเรียกใช้คำสั่ง PowerShell และใช้ตัวดำเนินการทางลอจิคัล คุณต้องเชื่อมต่อกับ Exchange Online PowerShell ก่อน เปิด Windows PowerShell ในฐานะผู้ดูแลระบบ เรียกใช้ cmdlet ด้านล่าง และลงชื่อเข้าใช้ด้วยข้อมูลประจำตัวผู้ดูแลระบบของคุณ

Connect-ExchangeOnline

โครงสร้างตัวดำเนินการลอจิคัล PowerShell

ส่วนประกอบเพิ่มเติมที่เราจะใช้กับตัวดำเนินการเชิงตรรกะคือ Where-Object

cmdlet Where-Object รวมกับตัวดำเนินการเชิงตรรกะ ช่วยให้เราสามารถสร้างประโยค PowerShell ที่อธิบายเงื่อนไขที่ต้องการได้ ในตัวอย่างถัดไป เราจะใช้ Where-Object แบบย่อ โดยใช้ Where cmdlet

เราจะแสดงวิธีการดำเนินการโครงสร้างประโยค PowerShell ที่มีเงื่อนไขเฉพาะ

โครงสร้างประโยค PowerShell:

  1. ในส่วนแรกของประโยค PowerShell เราจะใช้ Get-Mailbox cmdlet พร้อมด้วย -ResultSize Unlimited เพื่อค้นหาประเภทกล่องจดหมายที่มีอยู่ทั้งหมด
  2. เราใช้ไปป์ไลน์ (|) เพื่อรับอินพุตจากส่วนแรกและดำเนินการบางอย่างกับส่วนที่สอง
  3. ในส่วนที่สองของประโยค PowerShell เราจะใช้ Where cmdlet
  4. เงื่อนไขต้องอยู่ในวงเล็บปีกกา { }

    • สัญกรณ์ $_. ใช้เพื่อแสดงวัตถุเริ่มต้น
    • ใช้ตัวดำเนินการเชิงตรรกะ -ไม่ใช่
    • ระบุชื่อ คุณสมบัติ
    • ระบุ ค่า ในเครื่องหมายคำพูดคู่ (“)

ดูตัวอย่างไวยากรณ์ PowerShell ด้านล่าง

Get-Mailbox -ResultSize Unlimited | Where {-not $_.Property -eq "Value"}
  1. จากนั้น คุณสามารถเพิ่มส่วนเพิ่มเติมโดยใช้ไปป์ไลน์ (|) และ เลือก cmdlet เพื่อระบุคุณสมบัติที่จะแสดง

ตัวอย่างไวยากรณ์คำสั่ง PowerShell พร้อมคุณสมบัติการเลือก

Get-Mailbox -ResultSize Unlimited | Where {-not $_.Property -eq "Value"} | Select Property1, Property2

ตัวอย่างตัวดำเนินการลอจิคัลของ PowerShell

มีความเป็นไปได้ไม่จำกัดเมื่อใช้ตัวดำเนินการแบบลอจิคัลใน PowerShell เราจะแสดงตัวอย่างที่แตกต่างกันโดยใช้ตัวดำเนินการเชิงตรรกะกับตัวดำเนินการเปรียบเทียบ -eq (=เท่ากับ)

1. ตัวดำเนินการเชิงตรรกะ -ไม่ใช่

เราต้องการแสดงรายการผู้ใช้ Microsoft 365 ทั้งหมดที่ไม่ได้ทำงานในแผนกขาย เพื่อปฏิบัติตามข้อกำหนดนี้ เราจำเป็นต้องใช้ตัวดำเนินการเปรียบเทียบ (-eq) ร่วมกับตัวดำเนินการเชิงตรรกะ (-not)

  1. ในส่วนแรกของประโยค PowerShell เราจะใช้ Get-User cmdlet เราจำเป็นต้องเพิ่มคำสั่ง -ResultSize Unlimited เพื่อรับรายชื่อผู้ใช้ที่มีอยู่ทั้งหมด เอาต์พุตจากส่วนแรกถูกส่งไปยังส่วนที่สองของคำสั่ง PowerShell
  2. ในส่วนที่สองของประโยค PowerShell เราจะใช้ Where cmdlet ตามด้วยเงื่อนไขในวงเล็บปีกกา { }
  3. เงื่อนไขจะใช้ตัวดำเนินการเชิงตรรกะ -not
  4. ตัวดำเนินการเปรียบเทียบ -eq เพื่อจับคู่ผู้ใช้จากแผนก การขาย

เรียกใช้ตัวอย่างคำสั่ง PowerShell ด้านล่าง

Get-User -ResultSize Unlimited | Where {-not ($_.Department -eq "Sales")} | Select Name, RecipientType, Department

ผลลัพธ์ของ PowerShell จะแสดงแผนกทั้งหมด แต่ไม่ใช่ การขาย

Name                                 RecipientType Department
----                                 ------------- ----------
41377e9c-dc47-46c0-b4a5-1d5bbdcb5cc5 UserMailbox   Marketing
c32b2b27-d809-439a-a3e3-eb7a749eeb72 UserMailbox   IT
5cae3874-442b-459c-8f33-3aee5b879275 UserMailbox   Marketing
411a8f10-0dfa-4034-a1e3-a8b6e4cad2f6 UserMailbox   IT
e5c3a5e8-eeae-4829-94dc-fb7228bcf8da UserMailbox   IT
4631b453-3a0a-439e-a2ea-7af2b9a741b3 User          Finance
7545348c-b473-45b5-890d-38bc59b4a163 User          Finance
0f38d53f-cbe0-4844-86e9-1032a45ba31b UserMailbox   Marketing

2. ตัวดำเนินการเชิงตรรกะ -และ

คุณสามารถใช้ตัวดำเนินการเชิงตรรกะ -และ เพื่อรวมเงื่อนไขตั้งแต่สองเงื่อนไขขึ้นไปในคำสั่ง PowerShell

เราต้องการแสดงรายการผู้ใช้ Microsoft 365 ทั้งหมดที่ทำงานในแผนก การขาย และชื่อควรเป็น ผู้จัดการ

ตัวดำเนินการเปรียบเทียบที่เราจะใช้คือ -eq สำหรับแต่ละเงื่อนไข ตัวดำเนินการเชิงตรรกะที่เราจะใช้คือ -และ เนื่องจากผู้ใช้ควรตรงกับทั้งสองเงื่อนไขในเวลาเดียวกัน

เรียกใช้ไวยากรณ์คำสั่ง PowerShell

Get-User -ResultSize Unlimited | Where {($_.Department -eq "Sales") -and ($_.Title -eq "Manager")} | Select Name, RecipientType, Department

ผลลัพธ์ของ PowerShell จะแสดงผู้ใช้ที่ทำงานในแผนก การขาย และมีตำแหน่ง ผู้จัดการ

Name                                 RecipientType Department
----                                 ------------- ----------
f8261d51-3df9-4f21-a6b1-533412669c11 User          Sales
0de964ae-f09a-4e65-bc8c-cbeac2745e4c User          Sales

3. ตัวดำเนินการเชิงตรรกะ -หรือ

เราต้องการแสดงรายการผู้ใช้ Microsoft 365 ทั้งหมดที่มาจากแผนก ฝ่ายขาย หรือผู้ใช้ที่มีตำแหน่งผู้จัดการจากแผนกใดก็ได้ เพื่อปฏิบัติตามข้อกำหนดนี้ เราจำเป็นต้องใช้ตัวดำเนินการเปรียบเทียบ (-eq) ร่วมกับตัวดำเนินการเชิงตรรกะ (-or)

  1. ในส่วนแรกของประโยค PowerShell เราจะใช้ Get-User cmdlet ตามด้วย -Resultsize Unlimited
  2. ในส่วนที่สองของประโยค PowerShell เราจะใช้ cmdlet Where ตามด้วยเงื่อนไขสองข้อในวงเล็บปีกกา { }
  3. สำหรับแต่ละเงื่อนไข คุณต้องใช้วงเล็บ ( )
  4. ในเงื่อนไขแรก เราจะใช้ตัวดำเนินการเปรียบเทียบ -eq เพื่อจับคู่ผู้ใช้จากแผนก การขาย
  5. หลังจากเงื่อนไขแรก เราจะใช้ตัวดำเนินการเชิงตรรกะ -หรือ
  6. เงื่อนไขที่ 2 จะใช้ตัวดำเนินการเปรียบเทียบ -eq เพื่อจับคู่ผู้ใช้ที่มีชื่อ ผู้จัดการ

เรียกใช้ไวยากรณ์คำสั่ง PowerShell

Get-User -ResultSize Unlimited | Where {($_.Department -eq "Sales") -or ($_.Title -eq "Manager")} | Select Name, RecipientType, Department, Title

ผลลัพธ์ของ PowerShell จะแสดงผู้ใช้ในแผนก การขาย หรือมีตำแหน่ง ผู้จัดการ หรือทั้งสองอย่าง

Name                                 RecipientType Department Title
----                                 ------------- ---------- -----
fa956d8c-87df-4cd4-ac2a-ac1f3d7cac8b User          Sales
b602b148-2fcf-435a-9d34-ce72c3a8c748 UserMailbox   Sales
1e367b85-f0c0-4c9c-a16a-22d132f1d8e6 UserMailbox              Manager
f8261d51-3df9-4f21-a6b1-533412669c11 User          Sales      Manager
7bfec79d-7806-484a-ac83-133cd4cf5af5 User                     Manager
bc741ead-e704-4eb9-a9e8-adfa1f187c92 User          Sales
0de964ae-f09a-4e65-bc8c-cbeac2745e4c User          Sales      Manager
411a8f10-0dfa-4034-a1e3-a8b6e4cad2f6 UserMailbox   IT         Manager
27c03114-f9a1-4c02-83ef-bd4ee32f00cf User          Sales
82cd0d62-e974-4892-aca6-e0387abc62be UserMailbox   Sales      Member
52a6c1c7-77d2-4109-99b9-a4076167b6e2 UserMailbox   Sales
0f38d53f-cbe0-4844-86e9-1032a45ba31b UserMailbox   Marketing  Manager

4. ตัวดำเนินการเชิงตรรกะ -xor

เราต้องการแสดงรายการผู้ใช้ Microsoft 365 ทั้งหมดที่ทำงานในแผนก การขาย หรือตำแหน่งเป็น ผู้จัดการ แต่ไม่ใช่ทั้งสองอย่าง เพื่อปฏิบัติตามข้อกำหนดนี้ เราจำเป็นต้องใช้ตัวดำเนินการเปรียบเทียบ (-eq) ร่วมกับตัวดำเนินการเชิงตรรกะ (-xor)

คล้ายกับตัวดำเนินการเชิงตรรกะ -หรือ แต่จะไม่แสดงผู้ใช้ที่มีตำแหน่ง ผู้จัดการ จากแผนก การขาย

ดูไวยากรณ์คำสั่ง PowerShell

Get-User -ResultSize Unlimited | Where {($_.Department -eq "Sales") -xor ($_.Title -eq "Manager")} | Select Name, RecipientType, Department, Title

ผลลัพธ์ของ PowerShell จะแสดงผู้ใช้ในแผนก การขาย หรือที่มีชื่อ ผู้จัดการ แต่ไม่ใช่ทั้งสองอย่าง

Name                                 RecipientType Department Title
----                                 ------------- ---------- -----
fa956d8c-87df-4cd4-ac2a-ac1f3d7cac8b User          Sales
b602b148-2fcf-435a-9d34-ce72c3a8c748 UserMailbox   Sales
1e367b85-f0c0-4c9c-a16a-22d132f1d8e6 UserMailbox              Manager
7bfec79d-7806-484a-ac83-133cd4cf5af5 User                     Manager
bc741ead-e704-4eb9-a9e8-adfa1f187c92 User          Sales
411a8f10-0dfa-4034-a1e3-a8b6e4cad2f6 UserMailbox   IT         Manager
27c03114-f9a1-4c02-83ef-bd4ee32f00cf User          Sales
82cd0d62-e974-4892-aca6-e0387abc62be UserMailbox   Sales      Member
52a6c1c7-77d2-4109-99b9-a4076167b6e2 UserMailbox   Sales
0f38d53f-cbe0-4844-86e9-1032a45ba31b UserMailbox   Marketing  Manager

5. รวมตัวดำเนินการเชิงตรรกะ -หรือ -และ

เราต้องการแสดงรายการผู้ใช้ Microsoft 365 ทั้งหมดที่ทำงานในแผนก การขาย หรือ การตลาด โดยมีชื่อ ผู้จัดการ

การรวมกันของเงื่อนไขต่างๆ ควรอยู่ในวงเล็บปีกกา { }:

  • ตัวดำเนินการเปรียบเทียบที่เราจะใช้คือ -eq สำหรับแต่ละเงื่อนไขที่ถูกปิดในวงเล็บ ( )
  • ตัวดำเนินการเชิงตรรกะตัวแรกที่เราจะใช้คือ -หรือ เนื่องจากอาจเป็นผู้ใช้จากแผนก การขาย หรือ การตลาด
  • ตัวดำเนินการเชิงตรรกะตัวที่สองที่เราจะใช้คือ -และ เนื่องจากผู้ใช้ควรมีตำแหน่ง ผู้จัดการ ในเวลาเดียวกัน

เรียกใช้ไวยากรณ์คำสั่ง PowerShell ด้านล่าง

Get-User | Where {($_.Department -eq "Sales") -or ($_.Department -eq "Marketing") -and ($_.Title -eq "Manager")}

ผลลัพธ์ของ PowerShell จะแสดงผู้ใช้ทั้งหมดที่มีตำแหน่ง ผู้จัดการ ในแผนก การขาย หรือ การตลาด

Name                                 RecipientType Department Title
----                                 ------------- ---------- -----
f8261d51-3df9-4f21-a6b1-533412669c11 User          Sales      Manager
0de964ae-f09a-4e65-bc8c-cbeac2745e4c User          Sales      Manager
0f38d53f-cbe0-4844-86e9-1032a45ba31b UserMailbox   Marketing  Manager

แค่นั้นแหละ!

อ่านเพิ่มเติม: ส่งออกผู้ใช้ Azure AD ด้วย Microsoft Graph PowerShell »

บทสรุป

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

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

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