PowerShell , Office 365 , ไวยากรณ์ | พลังของ PowerShell | ตอนที่ 2/3 .com
ในบทความปัจจุบัน เราจะทบทวนวิธีใช้คำสั่ง “Get” ของ PowerShell ที่มีชื่อเสียงสำหรับ “การดึงข้อมูล” (รับ) อ็อบเจ็กต์ และแสดงข้อมูลเกี่ยวกับอ็อบเจ็กต์
นอกจากนี้ เราจะเรียนรู้วิธี "กำหนดรูปร่าง" หรือปรับผลลัพธ์ที่เราได้รับจากคำสั่ง "รับ" ของ PowerShell ตามความต้องการเฉพาะของเรา
พลังของ PowerShell | บทความซีรีส์
ชุดบทความ The Power of PowerShell รวมถึงบทความสามบทความต่อไปนี้:
- พลังของ PowerShell | ส่วนที่ 1/3
- พลังของ PowerShell | ส่วนที่ 2/3
- พลังของ PowerShell | ส่วนที่ 3/3
ขอแนะนำคำสั่ง “รับ” ของ PowerShell
เอาต์พุตคำสั่ง “Get ” ขึ้นอยู่กับรูปแบบเอาต์พุตที่กำหนดไว้ล่วงหน้า (ข้อมูลที่แสดงบนหน้าจอ) ตัวอย่างเช่น เมื่อใช้คำสั่ง get เพื่อแสดงข้อมูลเกี่ยวกับกล่องจดหมาย ข้อมูลจะแสดงในรูปแบบตาราง โดยมี “ส่วนหัวของตาราง” (คุณสมบัติ) ที่กำหนดไว้ล่วงหน้า
เพื่อจุดประสงค์ในการสาธิต เราจะใช้ PowerShell cmdlet พื้นฐานที่สุด:
Get-Mailbox
ตัวอย่างที่ 1 - แสดงข้อมูลเกี่ยวกับอินสแตนซ์เฉพาะของออบเจ็กต์
หากต้องการรับข้อมูลเกี่ยวกับกล่องจดหมายเฉพาะ เราจะต้องระบุข้อมูลประจำตัวของกล่องจดหมาย
ไวยากรณ์สำหรับคำสั่ง PowerShell คือ:
Get-Mailbox <identity>คุณสามารถเห็นในภาพหน้าจอที่ผลลัพธ์ (เอาต์พุต) แสดงในรูปแบบตาราง โดยมี "ส่วนหัวของตาราง" ที่กำหนดไว้ล่วงหน้า (ความเหมาะสมของวัตถุ) เช่น ชื่อกล่องจดหมายและนามแฝง ชื่อเซิร์ฟเวอร์ที่โฮสต์กล่องจดหมายและขนาดกล่องจดหมาย
ตัวอย่างที่ 2 - แสดงข้อมูลเกี่ยวกับคลาสอ็อบเจ็กต์
เมื่อเราใช้คำสั่ง Get-Mailbox โดยไม่ระบุเอกลักษณ์ของกล่องจดหมาย คำสั่ง "Get" ที่เป็นค่าเริ่มต้นคือรับ/ดึงข้อมูลออบเจ็กต์คลาสกล่องจดหมายทั้งหมด (PowerShell “เข้าใจ” ว่าเราต้องการข้อมูลเกี่ยวกับวัตถุทั้งหมดที่ “เป็น” ของคลาสเฉพาะ)
เพื่อแสดงรายการกล่องจดหมายที่มีอยู่ทั้งหมด เราใช้คำสั่ง:
Get-Mailboxในภาพหน้าจอ คุณจะเห็นว่าผลลัพธ์จากคำสั่ง Get-Mailbox จะแสดงรายการกล่องจดหมายที่มีอยู่ทั้งหมด
หมายเหตุ: เราสามารถควบคุมจำนวนกล่องจดหมายที่จะแสดงได้ ในกรณีที่เรามีกล่องจดหมายจำนวนมาก คำสั่ง Get-Mailbox จะไม่แสดงกล่องจดหมายทั้งหมด หากต้องการ "บังคับใช้" PowerShell เพื่อแสดง "รายการทั้งหมด" ของกล่องจดหมายทั้งหมด เราสามารถเพิ่มพารามิเตอร์ได้: ResultSize Unlimited
ไวยากรณ์คำสั่ง PowerShell:
Get-Mailbox -ResultSize unlimitedรับ cmdlets - จัดรูปแบบผลลัพธ์เอาต์พุต
เมื่อเราใช้คำสั่ง “รับ” เพื่อแสดงข้อมูลเกี่ยวกับวัตถุ จะมีตัวเลือกรูปแบบให้เลือกสองแบบ:
- รูปแบบตาราง
- รูปแบบรายการ
(รูปแบบการแสดงผลเริ่มต้นสำหรับคำสั่ง “รับ” คือ: รูปแบบตาราง)
1. รูปแบบตาราง
“รูปแบบตาราง ” (หรือที่เรียกว่ารูปแบบตารางด้วย) ช่วยให้เราสามารถแสดงข้อมูลในรูปแบบ “อ่านง่าย” ได้
รูปแบบตารางโดยยึดตาม “คอลัมน์ตาราง ” (คุณสมบัติของวัตถุ) และค่าวัตถุที่แสดง “ ภายใต้ ” ส่วนหัวของตาราง
ข้อเสียเปรียบหลักของรูปแบบตารางคือความกว้างของคอนโซล PowerShell “จำนวน” ของข้อมูลที่สามารถแสดงบนหน้าจอจำกัดไว้ที่ความกว้างของคอนโซล PowerShell PowerShell ช่วยให้เราสามารถควบคุม "การออกแบบ" ของรูปแบบตารางโดยการเลือกส่วนหัวของตาราง (คุณสมบัติของวัตถุ) ที่แสดงบนหน้าจอ และโดยการใช้ "พารามิเตอร์รูปแบบ" ที่ช่วยให้เราสามารถควบคุมพารามิเตอร์เช่น - การตัดคำ ความกว้างของแถว และอื่น ๆ.
ดังที่ได้กล่าวไปแล้วเมื่อเราใช้คำสั่ง “รับ ” รูปแบบการแสดงผลเริ่มต้นคือรูปแบบตาราง เมื่อเราต้องปรับแต่งเอาต์พุตของคำสั่ง “Get” เราจำเป็นต้อง “เพิ่ม” ตัวเลือก Pipe เพื่อ “แจ้ง” PowerShell ว่ารูปแบบที่ต้องการคืออะไร และคุณสมบัติหรือพารามิเตอร์การออกแบบที่ต้องการที่เราต้องการใช้คืออะไร
cmdlets ที่เราใช้สำหรับการใช้ Table Format คือ Format-Table หรือเราสามารถใช้เวอร์ชันย่อ: FT
ตัวอย่างเช่น เมื่อเราต้องการแสดงข้อมูลในรูปแบบตาราง เราสามารถใช้ไวยากรณ์ต่อไปนี้:
Get-Mailbox |Format-Tableตัวเลือกเพิ่มเติมคือใช้เวอร์ชันย่อ: FT
Get-Mailbox |FTในภาพหน้าจอเราจะเห็นรายชื่อกล่องจดหมายของผู้ใช้ โปรดสังเกตว่า "ส่วนหัวของตาราง" ได้รับการ "กำหนดค่าไว้ล่วงหน้า" โดยตัวเลือกการแสดงผลเริ่มต้นของคำสั่ง "รับ"
มาดูกันว่าเกิดอะไรขึ้นหากเราใช้คำสั่ง Get-Mailbox โดยไม่มีตัวเลือก | Format-Table
คุณจะเห็นว่าผลลัพธ์เหมือนกัน เนื่องจากตามที่กล่าวไว้ รูปแบบเริ่มต้นสำหรับคำสั่ง "Get" คือ Format-Table
2. รูปแบบรายการ
ข้อดีหลักของการใช้ "รูปแบบรายการ" คือเราสามารถแสดงข้อมูลที่มีอยู่ (คุณสมบัติ) ทั้งหมดเกี่ยวกับวัตถุได้ รูปแบบรายการไม่ "ได้รับผลกระทบ" โดย "ข้อจำกัดความกว้าง" ของคอนโซล PowerShell เนื่องจากข้อมูลเกี่ยวกับวัตถุ (คุณสมบัติและค่า) จะแสดงเป็น "รายการ" ใต้ชื่อวัตถุ
บางครั้งรูปแบบนี้อาจถูกพิจารณาว่าเป็น “ข้อเสีย” เนื่องจากเมื่อแสดงเกี่ยวกับออบเจ็กต์จำนวนมาก ข้อมูลในรูปแบบรายการจะ “อ่านง่ายน้อยกว่า” เทียบกับรูปแบบตาราง
ไวยากรณ์คำสั่ง PowerShell:
Get-Mailbox |Format-Listตัวเลือกเพิ่มเติมคือใช้เวอร์ชันย่อ: FL
Get-Mailbox |FLหากคุณดูภาพหน้าจอคุณจะเห็นว่าเมื่อเราใช้ตัวเลือก "รูปแบบรายการ" เราได้รับช่องข้อมูลเพิ่มเติม (คุณสมบัติ) มากมายซึ่งเราไม่สามารถใช้ได้เมื่อเราใช้รูปแบบตาราง
จัดรูปแบบผลลัพธ์ของคำสั่ง "Get"
ในส่วนนี้ เราจะได้เรียนรู้วิธี "เพิ่มประสิทธิภาพ" ผลลัพธ์ที่แสดงโดยคำสั่ง "รับ"
ความท้าทายที่เราเผชิญคือ:
- วิธีแสดงข้อมูล (คุณสมบัติ) ที่เกี่ยวข้องกับความต้องการของเรา ดังที่คุณจำได้ รูปแบบตารางจะแสดงข้อมูลที่จำกัดมากและรูปแบบรายการจะแสดง “ข้อมูลมากเกินไป” ซึ่งอ่านได้ไม่ง่ายนัก
- วิธีเอาชนะข้อจำกัดของความกว้างหน้าจอคอนโซล PowerShell (คอนโซล PowerShell มีความกว้างเฉพาะที่จำกัดจำนวนข้อมูลที่สามารถแสดงได้)
มาเริ่มทบทวนโซลูชันต่างๆ ที่เราสามารถใช้เป็นสื่อกลางในการจำกัดนี้ได้
การใช้ตัวเลือก “คุณสมบัติ ”
ตัวเลือก “คุณสมบัติ ” ช่วยให้เราสามารถเลือกคุณสมบัติที่เกี่ยวข้องกับความต้องการของเราได้
ตัวอย่างเช่น เราต้องการแสดงข้อมูลเกี่ยวกับกล่องจดหมาย ข้อมูลที่เราสนใจมีคุณสมบัติดังต่อไปนี้: ชื่อแทนผู้ใช้ ชื่อที่แสดงของผู้ใช้ และที่อยู่อีเมลของผู้ใช้
เพื่อให้สามารถ “แทนที่ ” คุณสมบัติเริ่มต้นที่แสดงโดยคำสั่ง “รับ ” เราสามารถใช้ตัวเลือก “คุณสมบัติ ” และระบุ “ชื่อคุณสมบัติ ” ที่เราต้องการแสดง
ไวยากรณ์ของ PowerShell คือ:
Get-Mailbox |Format-Table -Property Alias, Displayname,EmailAddressesเราสามารถใช้เวอร์ชันย่อโดยไม่ต้องระบุตัวเลือก "คุณสมบัติ" เมื่อเราใช้ตัวเลือก “Format-Table ” หรือ “Format-List ” และเพิ่มชื่อคุณสมบัติ PowerShell จะ “ฉลาดพอที่จะเข้าใจว่าสิ่งเหล่านี้เป็นคุณสมบัติที่ควรแสดง
คำสั่ง PowerShell เวอร์ชันย่อจะมีลักษณะดังนี้:
Get-Mailbox |FT Alias,Displayname,EmailAddressesหมายเหตุ: ในตัวอย่างถัดไป เราจะใช้เวอร์ชันที่สั้นลง
คำแนะนำทั่วไป:
- ชื่อทรัพย์สิน - ชื่อทรัพย์สินควรเขียนเป็น “หนึ่งคำ” โดยไม่มีช่องว่าง
- แยกชื่อคุณสมบัติ - เมื่อเราเขียนชื่อคุณสมบัติหนึ่งชื่อมากขึ้น เราควรเพิ่มอักขระ "ลูกน้ำ" หลังชื่อคุณสมบัติแต่ละชื่อ เราสามารถมีอักขระ "ช่องว่าง" ระหว่างชื่อคุณสมบัติได้ ตราบใดที่เราใช้อักขระ "ลูกน้ำ" เพื่อแยกชื่อคุณสมบัติแต่ละรายการ
ในภาพหน้าจอต่อไปนี้ เราจะเห็นผลลัพธ์ของคำสั่ง Get-Mailbox ที่แสดงคุณสมบัติที่เราเลือก:
โปรดสังเกตว่าแม้ว่าเราจะจัดการเพื่อแสดงคุณสมบัติที่ต้องการ แต่เรายังคงมีปัญหาเรื่อง "ความกว้าง" ของคอนโซล PowerShell
เมื่อแสดงคุณสมบัติที่มี "ค่าแบบยาว" วิธีแก้ไขเพิ่มเติมคือใช้ตัวเลือกของรูปแบบรายการ
ตัวอย่างเช่น ลองใช้คำสั่งเดียวกันและใช้ตัวเลือก Format-List:
Get-Mailbox |FL Alias,Displayname,EmailAddressesการใช้ตัวเลือก "ตัด"
อีกตัวเลือกหนึ่งที่เราใช้สำหรับ “การจัดการ ” กับ “ค่าแบบยาว ” เช่น: ที่อยู่อีเมล คือตัวเลือก “Wrap” เมื่อเราใช้ตัวเลือก "wrap" คุณสมบัติเช่นที่อยู่อีเมลที่มี "ค่ายาว" ที่เข้าถึงข้อจำกัด "ความกว้าง" ของคอนโซล PowerShell จะถูก "ย้าย" ไปยังบรรทัดถัดไป ดังนั้นเราจะสามารถดู "เต็ม" ค่า ”.
ตัวอย่างเช่น: หากต้องการบรรเทาด้วย “ข้อจำกัดความกว้างคอนโซล PowerShell ” เราสามารถใช้ตัวเลือก “Wrap ”
ไวยากรณ์คำสั่ง PowerShell:
Get-Mailbox |FT Alias,Displayname,EmailAddresses -Wrapในภาพหน้าจอ คุณสามารถดูผลลัพธ์ได้เมื่อใช้ตัวเลือก "ตัดคำ" เมื่ออักขระ "ถึงจุดสิ้นสุด" ของคอนโซล PowerShell ทางด้านขวา "เส้นขอบ" ส่วนที่เหลือของ "สตริงค่า" (ที่อยู่อีเมล) จะแสดงในบรรทัดใหม่
การใช้ตัวเลือก "กลุ่ม"
ตัวเลือก “กลุ่ม” ตามชื่อที่บอกไว้ ช่วยให้เราสามารถจัดกลุ่มผลลัพธ์ที่แสดงได้
ตัวอย่างเช่น: เมื่อเราใช้คำสั่ง “Get-Mailbox” มาตรฐาน ผลลัพธ์ที่แสดงจะรวมรายการประเภททั้งหมดของกล่องจดหมายดังกล่าว เช่น กล่องจดหมายของผู้ใช้, กล่องจดหมายในห้อง, กล่องจดหมายที่ใช้ร่วมกัน เป็นต้น
เมื่อใช้ตัวเลือก "กลุ่ม" เราจะต้องระบุคุณสมบัติที่จะทำหน้าที่เป็น "แหล่งที่มา" สำหรับ "การจัดกลุ่ม"
ตัวอย่างเช่น สำหรับการแสดงข้อมูลเกี่ยวกับกล่องจดหมายที่จัดกลุ่มตามประเภทกล่องจดหมาย เราจะใช้คุณสมบัติ "RecipientTypeDetails"
ไวยากรณ์คำสั่ง PowerShell:
Get-Mailbox |Group RecipientTypeDetailsในภาพหน้าจอคุณจะเห็นว่าตัวเลือก "กลุ่ม" ช่วยให้เราได้รับ "มุมมองที่ชัดเจน" เกี่ยวกับประเภทกล่องจดหมายที่เรามีและเกี่ยวกับจำนวนกล่องจดหมายแต่ละประเภท
การใช้ตัวเลือก "เรียงลำดับ"
ตัวเลือก “sort” ช่วยให้เราสามารถเรียงลำดับผลลัพธ์โดยเกี่ยวข้องกับส่วนหัวของตาราง (คุณสมบัติ) ที่เฉพาะเจาะจง
ตัวอย่างเช่น เมื่อเราต้องการเรียงลำดับผลลัพธ์ของคำสั่ง Get-Mailbox ตามคุณสมบัติของ “Alias”
ไวยากรณ์คำสั่ง PowerShell:
Get-Mailbox |Sort-Object Aliasเราสามารถใช้คำสั่ง sort แบบย่อได้:
Get-Mailbox | Sort Alias"การเรียงลำดับ" ของค่าสามารถทำได้โดยใช้ลำดับจากน้อยไปหามากหรือจากมากไปหาน้อย ไม่มี "สวิตช์จากน้อยไปหามาก" สำหรับ Sort-Object cmdlet เนื่องจากค่าเริ่มต้นของตัวเลือก "เรียงลำดับ" คือจากน้อยไปมาก
ในกรณีที่เราต้องการใช้ตัวเลือกจากมากไปน้อย เราสามารถใช้ไวยากรณ์ต่อไปนี้:
Get-Mailbox |Sort Alias Descendingการใช้ตัวเลือก "ขนาดอัตโนมัติ"
ตัวเลือกของ "ขนาดอัตโนมัติ" มีความเกี่ยวข้องเมื่อเราเลือกที่จะแสดงข้อมูลโดยใช้รูปแบบตาราง ดังที่เราทราบ เมื่อใช้รูปแบบตาราง เอาต์พุตจากคำสั่ง "รับ" จะใช้ "พารามิเตอร์การออกแบบ" ที่กำหนดไว้ล่วงหน้า เช่น ความกว้างของแถวตาราง
ตัวอย่างเช่น: เมื่อใช้คำสั่ง Get-Mailbox คุณจะเห็นในภาพหน้าจอว่ากล่องจดหมายที่มี "ชื่อยาว" เช่น "DiscoverySearchmailbox" ไม่ได้แสดงทั้งหมด:
เพื่อเอาชนะข้อจำกัดนี้ เราสามารถใช้ตัวเลือก: -AutoSize
เมื่อใช้ตัวเลือก AutoSize PowerShell จะปรับแต่งความกว้างแถวของตารางให้พอดีกับค่าด้วย “ชื่อที่ยาวที่สุด”
ไวยากรณ์คำสั่ง PowerShell:
Get-Mailbox |FT -AutoSizeโปรดสังเกตว่าตอนนี้เราสามารถเห็น “ชื่อเต็ม ” ของ “DiscoverySearchmailbox ” แต่เนื่องจากข้อจำกัดด้านความกว้างของคอนโซล PowerShell คุณสมบัติเริ่มต้นอื่นๆ จึงถูก “ลบ” ออกจากจอแสดงผล เนื่องจากคอนโซล PowerShell ไม่ได้ กว้างพอที่จะแสดงคุณสมบัติที่เหลือ เช่น ชื่อเซิร์ฟเวอร์ เป็นต้น
การรวมกันของพารามิเตอร์การแสดงผล
เราสามารถใช้การรวมกันของพารามิเตอร์การแสดงผลเพื่อปรับเอาต์พุตที่แสดงให้เหมาะสม
ในตัวอย่างต่อไปนี้ เราใช้การรวมกันของ "พารามิเตอร์การแสดงผล ": เรียงลำดับ รูปแบบ-ตาราง และจัดกลุ่มตาม
หมายเหตุ: แทนที่จะใช้พารามิเตอร์ “group ” เราจะใช้พารามิเตอร์ “Groupby ” ตัวเลือกของ: ”Groupby ” ช่วยให้เราสามารถแสดงข้อมูลในรูปแบบที่แตกต่างกันได้
ไวยากรณ์คำสั่ง PowerShell:
Get-Mailbox |Sort RecipientTypeDetails |FT Name,Alias
-Groupby RecipientTypeDetails- ส่วนแรกจะ "รับ" ข้อมูลเกี่ยวกับกล่องจดหมายที่มีอยู่ทั้งหมด
- ส่วนที่สองจะเรียงลำดับผลลัพธ์ (ข้อมูลเกี่ยวกับกล่องจดหมาย) โดยใช้คุณสมบัติ "RecipientTypeDetails "
- ส่วนที่สามจะจัดรูปแบบเอาต์พุตโดยใช้รูปแบบตาราง และแสดงคุณสมบัติ “Alias ” และ “name ” และตัวเลือกของ “Groupby ” จะแสดงข้อมูลใน “sections ”
แต่ละ “ส่วน” มีข้อมูลเกี่ยวกับกล่องจดหมายที่ “เป็น” ของกล่องจดหมายประเภทใดประเภทหนึ่ง เช่น กล่องจดหมายของผู้ใช้ กล่องจดหมายที่ใช้ร่วมกัน เป็นต้น











