วิธีใช้ตัวดำเนินการแบบลอจิคัลใน 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:
- ในส่วนแรกของประโยค PowerShell เราจะใช้ Get-Mailbox cmdlet พร้อมด้วย -ResultSize Unlimited เพื่อค้นหาประเภทกล่องจดหมายที่มีอยู่ทั้งหมด
- เราใช้ไปป์ไลน์ (|) เพื่อรับอินพุตจากส่วนแรกและดำเนินการบางอย่างกับส่วนที่สอง
- ในส่วนที่สองของประโยค PowerShell เราจะใช้ Where cmdlet
เงื่อนไขต้องอยู่ในวงเล็บปีกกา { }
- สัญกรณ์ $_. ใช้เพื่อแสดงวัตถุเริ่มต้น
- ใช้ตัวดำเนินการเชิงตรรกะ -ไม่ใช่
- ระบุชื่อ คุณสมบัติ
- ระบุ ค่า ในเครื่องหมายคำพูดคู่ (“)
ดูตัวอย่างไวยากรณ์ PowerShell ด้านล่าง
Get-Mailbox -ResultSize Unlimited | Where {-not $_.Property -eq "Value"}- จากนั้น คุณสามารถเพิ่มส่วนเพิ่มเติมโดยใช้ไปป์ไลน์ (|) และ เลือก cmdlet เพื่อระบุคุณสมบัติที่จะแสดง
ตัวอย่างไวยากรณ์คำสั่ง PowerShell พร้อมคุณสมบัติการเลือก
Get-Mailbox -ResultSize Unlimited | Where {-not $_.Property -eq "Value"} | Select Property1, Property2ตัวอย่างตัวดำเนินการลอจิคัลของ PowerShell
มีความเป็นไปได้ไม่จำกัดเมื่อใช้ตัวดำเนินการแบบลอจิคัลใน PowerShell เราจะแสดงตัวอย่างที่แตกต่างกันโดยใช้ตัวดำเนินการเชิงตรรกะกับตัวดำเนินการเปรียบเทียบ -eq (=เท่ากับ)
1. ตัวดำเนินการเชิงตรรกะ -ไม่ใช่
เราต้องการแสดงรายการผู้ใช้ Microsoft 365 ทั้งหมดที่ไม่ได้ทำงานในแผนกขาย เพื่อปฏิบัติตามข้อกำหนดนี้ เราจำเป็นต้องใช้ตัวดำเนินการเปรียบเทียบ (-eq) ร่วมกับตัวดำเนินการเชิงตรรกะ (-not)
- ในส่วนแรกของประโยค PowerShell เราจะใช้ Get-User cmdlet เราจำเป็นต้องเพิ่มคำสั่ง -ResultSize Unlimited เพื่อรับรายชื่อผู้ใช้ที่มีอยู่ทั้งหมด เอาต์พุตจากส่วนแรกถูกส่งไปยังส่วนที่สองของคำสั่ง PowerShell
- ในส่วนที่สองของประโยค PowerShell เราจะใช้ Where cmdlet ตามด้วยเงื่อนไขในวงเล็บปีกกา { }
- เงื่อนไขจะใช้ตัวดำเนินการเชิงตรรกะ -not
- ตัวดำเนินการเปรียบเทียบ -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 Marketing2. ตัวดำเนินการเชิงตรรกะ -และ
คุณสามารถใช้ตัวดำเนินการเชิงตรรกะ -และ เพื่อรวมเงื่อนไขตั้งแต่สองเงื่อนไขขึ้นไปในคำสั่ง 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 Sales3. ตัวดำเนินการเชิงตรรกะ -หรือ
เราต้องการแสดงรายการผู้ใช้ Microsoft 365 ทั้งหมดที่มาจากแผนก ฝ่ายขาย หรือผู้ใช้ที่มีตำแหน่งผู้จัดการจากแผนกใดก็ได้ เพื่อปฏิบัติตามข้อกำหนดนี้ เราจำเป็นต้องใช้ตัวดำเนินการเปรียบเทียบ (-eq) ร่วมกับตัวดำเนินการเชิงตรรกะ (-or)
- ในส่วนแรกของประโยค PowerShell เราจะใช้ Get-User cmdlet ตามด้วย -Resultsize Unlimited
- ในส่วนที่สองของประโยค PowerShell เราจะใช้ cmdlet Where ตามด้วยเงื่อนไขสองข้อในวงเล็บปีกกา { }
- สำหรับแต่ละเงื่อนไข คุณต้องใช้วงเล็บ ( )
- ในเงื่อนไขแรก เราจะใช้ตัวดำเนินการเปรียบเทียบ -eq เพื่อจับคู่ผู้ใช้จากแผนก การขาย
- หลังจากเงื่อนไขแรก เราจะใช้ตัวดำเนินการเชิงตรรกะ -หรือ
- เงื่อนไขที่ 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 Manager4. ตัวดำเนินการเชิงตรรกะ -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 Manager5. รวมตัวดำเนินการเชิงตรรกะ -หรือ -และ
เราต้องการแสดงรายการผู้ใช้ 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 อัตโนมัติ อย่าลืมติดตามเราและแบ่งปันบทความนี้




