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

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. รูปแบบตาราง
  2. รูปแบบรายการ

(รูปแบบการแสดงผลเริ่มต้นสำหรับคำสั่ง “รับ” คือ: รูปแบบตาราง)

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"

ในส่วนนี้ เราจะได้เรียนรู้วิธี "เพิ่มประสิทธิภาพ" ผลลัพธ์ที่แสดงโดยคำสั่ง "รับ"
ความท้าทายที่เราเผชิญคือ:

  1. วิธีแสดงข้อมูล (คุณสมบัติ) ที่เกี่ยวข้องกับความต้องการของเรา ดังที่คุณจำได้ รูปแบบตารางจะแสดงข้อมูลที่จำกัดมากและรูปแบบรายการจะแสดง “ข้อมูลมากเกินไป” ซึ่งอ่านได้ไม่ง่ายนัก
  2. วิธีเอาชนะข้อจำกัดของความกว้างหน้าจอคอนโซล 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 ”

แต่ละ “ส่วน” มีข้อมูลเกี่ยวกับกล่องจดหมายที่ “เป็น” ของกล่องจดหมายประเภทใดประเภทหนึ่ง เช่น กล่องจดหมายของผู้ใช้ กล่องจดหมายที่ใช้ร่วมกัน เป็นต้น

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