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

บทนำสู่ Exchange Online V2 Cmdlets ใหม่


cmdlet ชุดใหม่ในโมดูล Exchange Online V2 พิสูจน์ได้ว่าเป็นประโยชน์และเป็นอุปสรรคสำหรับวิศวกรที่ย้ายกล่องจดหมายไปยัง Exchange Online หรือจัดการ Exchange Online โดยทั่วไป

สิ่งเหล่านี้เป็นประโยชน์เพราะ cmdlet ใหม่ทั้งเก้านั้นแข็งแกร่งและเร็วกว่ารุ่นก่อนๆ นอกจากนี้ยังเป็นความหายนะเนื่องจากจะต้องเขียนโค้ดสคริปต์ใหม่ตลอดจนการเรียนรู้วิธีการใหม่ (PropertySets และ Properties) ที่มีอยู่ใน cmdlets เหล่านี้

โดยรวมแล้ว Microsoft พยายามสร้างสมดุลระหว่างการใช้งาน ความเร็ว และความเข้ากันได้กับโมดูล PowerShell รุ่นก่อนหน้าสำหรับ Exchange Online

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

ข้อกำหนดเบื้องต้น

Exchange Online V2 Cmdlets มีข้อกำหนดเบื้องต้นสี่ประการที่ต้องปฏิบัติตามก่อนที่จะติดตั้งโมดูลใหม่ Jump Box หรือเวิร์กสเตชันปกติของคุณอาจเป็นไปตามข้อกำหนดเบื้องต้นเหล่านี้แล้ว อย่างไรก็ตาม หากไม่เป็นเช่นนั้น ข้อกำหนดเบื้องต้นเหล่านี้อาจจำเป็นต้องมีการติดตั้ง ไม่มีอะไรผิดปกติ แต่ทั้งหมดมอบประสบการณ์ PowerShell ที่ดีกว่าสำหรับผู้ดูแลระบบที่ใช้โมดูล PowerShell ใหม่ ข้อกำหนดเบื้องต้นสี่ประการมีดังนี้:

  • NuGet - เวอร์ชัน 2.8.5 หรือใหม่กว่า
  • PsGallery - พื้นที่เก็บข้อมูล PS ที่เชื่อถือได้
  • PackageManagement - ต้องเป็น v.x
  • PowerShell Get - ควรเป็น v.x หรือสูงกว่า

มาดูรายละเอียดการติดตั้งสำหรับแต่ละส่วนประกอบเหล่านี้กัน

NuGet เป็นเพียงตัวจัดการแพ็คเกจที่โมดูล Exchange Online V2 PowerShell ใช้งานอยู่ ช่วยให้ Microsoft แบ่งปันรหัสและผู้ดูแลระบบสามารถดาวน์โหลดโมดูลใหม่ได้ หากเราขาดตัวจัดการแพ็คเกจนี้บนเวิร์กสเตชันของเรา เราจะเห็นสิ่งที่คล้ายดังแสดงในรูปที่ 1:

รูปที่ 1: ข้อความนี้แสดงว่า NuGet ไม่ได้ถูกติดตั้งบนระบบ

การติดตั้งขั้นพื้นฐานจะมีลักษณะดังนี้:

หากเราต้องการตรวจสอบว่าจำเป็นต้องติดตั้ง NuGet เราก็สามารถตรวจสอบเวอร์ชันที่ติดตั้งได้หรือมีการติดตั้งเวอร์ชันใด ๆ ไว้หรือไม่ เช่น:

ตอนนี้หาก NuGet หายไป เราจะเรียกใช้โค้ดการติดตั้งด้านบน อย่างไรก็ตาม หากติดตั้ง NuGet แล้ว เราสามารถบังคับการติดตั้งเวอร์ชันขั้นต่ำที่ถูกต้องโดยใช้ cmdlet ก่อนหน้าด้วยวิธีใดวิธีหนึ่ง

ข้อมูลเพิ่มเติมเกี่ยวกับ NuGet

โปรดสังเกตว่าหมายเลขบิลด์เพิ่มขึ้นเป็น 2.12.1 แต่เราจำเป็นต้องมีเพียง 2.8.3 หรือสูงกว่าเท่านั้น

PSGallery - พื้นที่เก็บข้อมูลที่เชื่อถือได้

แกลเลอรี PowerShell คือพื้นที่เก็บข้อมูลที่เก็บสคริปต์ โมดูล และทรัพยากร DSC ที่พร้อมสำหรับการดาวน์โหลด Microsoft โฮสต์พื้นที่เก็บข้อมูลหนึ่งแห่งที่เรียกว่า PSGallery ซึ่งมีทรัพยากร PowerShell สำหรับผู้ดูแลระบบที่สนับสนุนผลิตภัณฑ์ของตน

ในกรณีของโมดูล Microsoft Exchange Online PowerShell V2 เราจำเป็นต้องเข้าถึงพื้นที่เก็บข้อมูลนี้เพื่อดาวน์โหลดโมดูล ตามค่าเริ่มต้น พื้นที่เก็บข้อมูลนี้อาจไม่น่าเชื่อถือ ดังนั้นเราจึงจำเป็นต้องตรวจสอบให้แน่ใจว่าเป็นเช่นนั้น ขั้นแรก มาตรวจสอบว่าได้รับความเชื่อถือจากเวิร์กสเตชันของเราหรือไม่:

(Get-PSRepository -Name "PSGallery").InstallationPolicy
Set-PSRepository -Name "PSGallery" -InstallationPolicy Trusted
(Get-PSRepository -Name "PSGallery").InstallationPolicy

เคล็ดลับ: ตรวจสอบการเปลี่ยนแปลงเสมอเพื่อป้องกันข้อผิดพลาดในอนาคต โดยเฉพาะอย่างยิ่งกับกระบวนการที่ต้องพึ่งพา

การจัดการแพ็คเกจ

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

สำหรับ PackageManagement เราจำเป็นต้องตรวจสอบให้แน่ใจว่าเรามีเวอร์ชัน 1.4.5 เป็นอย่างน้อย มาตรวจสอบสิ่งนี้ด้วย PowerShell:

Get-Package PackageManagement -MinimumVersion 1.4.5

หากไม่ได้ติดตั้ง PackageManagement เราจะได้รับข้อผิดพลาดดังนี้:

รูปที่ 2: ข้อความแสดงข้อผิดพลาดระบุว่าไม่ได้ติดตั้ง PackageManagement

เพื่อติดตั้ง PackageManagement อย่างถูกต้อง เราอาจจำเป็นต้องออกกำลังกายบางอย่าง นั่นเป็นเพราะว่ามีการขึ้นต่อกันที่อาจทำให้กระบวนการอัปเกรดสะดุดได้ อย่างไรก็ตาม หากทุกอย่างเป็นไปด้วยดี นี่เป็นบรรทัดเดียวที่เราจำเป็นต้องติดตั้ง PackageManagement:

Install-Module PackageManagement -Force -SkipPublisherCheck

รูปที่ 3: เนื่องจากมีการติดตั้ง PackageManagement เราจึงสามารถตรวจสอบได้ผ่าน PowerShell

โปรดสังเกตว่า “แหล่งที่มา ” สำหรับแพ็คเกจนี้คือ PowerShell Gallery ที่เราอนุญาตก่อนหน้านี้

PowerShell รับ

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

เราจะติดตั้งมันได้อย่างไร? ก่อนอื่นเราติดตั้งมันหรือไม่? เราต้องการเพียงเวอร์ชัน 2 หรือสูงกว่า ดังนั้นเราจะตรวจสอบเพื่อดูว่าเราได้ติดตั้งโมดูลที่มีเวอร์ชันหลักเป็น 2 หรือไม่:

รูปที่ 4: ผลลัพธ์ระบุว่าเวอร์ชันหลักของ cmdlet ที่ติดตั้งคือ “1”

ตอนนี้มาอัปเกรดเป็นอย่างน้อย 2.0:

Install-module PowerShellGet -MinimumVersion 2.0.0.0 -Force -Confirm:$False -SkipPublisherCheck

รูปที่ 5: ผลลัพธ์ยังคงระบุว่าเวอร์ชันหลักคือ “1”

รอ. อะไร ตอนนี้ควรจะเป็นสองแล้ว เกิดอะไรขึ้น ตอนนี้แพ็คเกจอัพเดตบนเครื่องของเราแล้วหรือยัง?

Get-Package PowerShellGet

รูปที่ 6: ผลลัพธ์ของ Get-Package แสดงว่าเวอร์ชันปัจจุบันคือ 2.2.5

ตกลง. เรามีเวอร์ชันที่ถูกต้องแล้ว เหตุใดจึงแสดง 1 ในเช็คของเรา นั่นเป็นเพราะว่าโมดูลที่โหลดนั้นเป็นโมดูลเก่า นั่นเป็นวิธีแก้ไขที่ง่าย:

รูปที่ 7: หลังจากลบแล้วนำเข้า PowerShellGet อีกครั้ง ข้อความแจ้งของเราจะแสดงเวอร์ชันที่ถูกต้อง

ตอนนี้เราเห็นแล้วว่า PowerShellGet จำนวน 2.x โหลดแล้วและพร้อมสำหรับเรา ตอนนี้เข้าสู่การดาวน์โหลดโมดูล:

ดาวน์โหลดโมดูล EXO V2

เมื่อเราติดตั้งข้อกำหนดเบื้องต้นทั้งสี่แล้ว ตอนนี้เราสามารถดาวน์โหลดโมดูลใหม่ด้วยวิธีเดียวกับโมดูลอื่นๆ สำหรับ PowerShell:

Install-Module ExchangeOnlineManagement
Get-InstalledModule ExchangeOnlineManagement

รูปที่ 8: ผลลัพธ์ของ “Get-InstalledModule ” แสดงว่าโมดูล EXO V2 ใหม่ได้รับการติดตั้งแล้ว

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

รูปที่ 9: ประวัติเวอร์ชันของ ExchangeOnlineManagement ใน PowerShell Gallery

แลกเปลี่ยน Cmdlets V2 ออนไลน์

ตอนนี้เมื่อเรามีข้อกำหนดเบื้องต้นและโมดูลใหม่ที่ติดตั้งแล้ว สิ่งนี้ให้ประโยชน์อะไรแก่เราบ้าง ขั้นแรก มาเชื่อมต่อกันและดูว่า Microsoft บอกว่ามีการเปลี่ยนแปลงอะไรบ้าง:

Connect-ExchangeOnline

รูปที่ 10: Connect-ExchangeOnline นำเสนอ cmdlets เก่าและใหม่ในโมดูล

โมดูลมีการแทนที่เก้า cmdlets แต่ยังคงให้ cmdlets ดั้งเดิมอื่นๆ มากกว่า 700+ รายการจากโมดูล Exchange Online ดั้งเดิมที่เราใช้มานานหลายปี

เมื่อเราตรวจสอบโมดูลที่โหลดของเรา เราเห็นโมดูลใหม่ที่ด้านบนของรายการ แต่เรายังเห็น cmdlets ดั้งเดิมแสดงอยู่ในโมดูลสุดท้ายด้วย (รูปที่ 11)

รูปที่ 11: Get-Module ให้ภาพรวมของโมดูลที่มีอยู่และ cmdlets ที่มีอยู่

สคริปต์ PowerShell ฟรี

ActionPack สำหรับ Microsoft Exchange ออนไลน์

ฟรีบน GitHub >

เหตุใดจึงต้องใช้ Exchange Online V2 cmdlets

  1. การลดข้อมูล: PowerShell cmdlets แบบดั้งเดิมจะส่งคืนข้อมูลทั้งหมด แม้ว่าข้อมูลทั้งหมดจะไม่แสดงก็ตาม cmdlet ของ EXO V2 ส่งคืนเฉพาะชุดย่อยของข้อมูล ซึ่งอาจท้าทายให้ผู้ดูแลระบบพิจารณาว่าพวกเขาต้องการอะไร
  2. ชุดคุณสมบัติ: ชุดข้อมูลที่จัดกลุ่มซึ่งสามารถส่งคืนโดย PowerShell cmdlets
  3. ความเร็ว: จากสองตัวอย่างก่อนหน้านี้ เมื่อรวมกันแล้วจะช่วยเพิ่มความเร็วและความน่าเชื่อถือให้กับ cmdlets ใหม่ทั้งเก้ารายการ

cmdlet เหล่านี้ถูกเลือกด้วยเหตุผลสองประการ - มีแนวโน้มมากที่สุดที่จะใช้ แต่ก็มีแนวโน้มมากที่สุดที่จะช้าหรือล้มเหลวเนื่องจากปริมาณข้อมูลที่ส่งคืนและภาระงานบนเซิร์ฟเวอร์ Exchange Online

การเปลี่ยนแปลงการดำเนินงาน

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

ตัวอย่างชุดคุณสมบัติ:

วิธีเก่า

Get-Mailbox | Where {$_.IsResource -eq 'True'} | Ft Name, Alias, PrimarySMTPAddress, *quota

วิธีการใหม่ของ EXO V2

ด้วย cmdlets ใหม่ เราจำเป็นต้องพึ่งพา PropertySets อย่างใดอย่างหนึ่งดังนี้:

Get-EXOMailbox -PropertySets Minimum, Resource, Quota | Where {$_.IsResource -eq 'True'} | ft

ตัวอย่างคุณสมบัติ:

Get-EXOMailbox -Properties Name,Alias,PrimarySMTPAddress, IsResource, IssueWarningQuota,ProhibitSendQuota, ProhibitSendReceiveQuota | Where {$_.IsResource -eq 'True'} | ft

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

เราจะทราบได้อย่างไรว่าพารามิเตอร์/คุณสมบัติใดบ้างที่สามารถใช้ได้กับชุดคุณสมบัติ? ไม่มีบันทึกไว้ใน รับความช่วยเหลือ หรือในความช่วยเหลือออนไลน์ของ Microsoft Docs มาดูตัวอย่าง Get-EXOMailbox จากตัวอย่างก่อนหน้านี้ เราสามารถดูรายการชุดคุณสมบัติทั้งหมดที่แสดงอยู่ใน Get-Help สำหรับ cmdlet:

หากเราค้นหาแอตทริบิวต์โควต้าทั้งหมด เราจะเห็นว่ามีคุณสมบัติโควต้า การใช้สิ่งนี้เผยให้เห็นคุณสมบัติมากมายสำหรับบัญชี:

Get-EXOMailbox Ted -PropertySets Quota

รูปที่ 12: การใช้คุณสมบัติ 'โควต้า' เปิดเผยรายละเอียดเพิ่มเติมเกี่ยวกับบัญชีบางบัญชี

โปรดสังเกตว่ามีคุณสมบัติบางอย่างที่ไม่เกี่ยวข้องกับโควต้า แต่เป็นตัวระบุสำหรับกล่องจดหมาย - UserPrincipalName, PrimarySMTPAddress และ Identity แทน คุณสมบัติที่รายงานขั้นต่ำคืออะไร? เรามาทบทวนตัวอย่างด้านล่างกัน เนื่องจากค่าเริ่มต้น (ไม่ได้ระบุ PropertySets) คือ “ขั้นต่ำ ”:

Get-EXOMailbox Ted

รูปที่ 13: รายการคุณสมบัติที่ไม่มีการกรอง

ประสบการณ์โลกแห่งความเป็นจริงด้วย EXO V2 cmdlets

จากช่วงเวลาสั้นๆ ที่ cmdlets เหล่านี้เผยแพร่สู่สาธารณะ ฉันสังเกตเห็นสิ่งต่อไปนี้:

  • การหมดเวลาน้อยลง - ในชุดข้อมูลกล่องจดหมาย 7,000 กล่อง EXO V2 cmdlets ใหม่สามารถตรวจสอบกล่องจดหมายทั้งหมด ดูแต่ละโฟลเดอร์ และค้นหารายการจำนวนมากในโฟลเดอร์ (100,000+) โดยไม่ต้องหมดเวลา ด้วย cmdlet รุ่นเก่า สิ่งนี้จะล้มเหลว
  • ความเร็ว - EXO v2 cmdlets ทำงานเร็วขึ้นมาก เราดำเนินการค้นหากับทั้ง Get-Mailbox และ Get-EXOMailbox:

    • รับกล่องจดหมาย [ทำงานเต็มรูปแบบ ผลลัพธ์ไม่จำกัด มีกล่องจดหมายมากกว่า 7,600+ กล่อง]:

      รูปที่ 14: เวลาดำเนินการโดยใช้ Get-Mailbox

    • รับ-EXOMailbox [ทำงานเต็มรูปแบบ ผลลัพธ์ไม่จำกัด มีกล่องจดหมายมากกว่า 7,600 กล่องจดหมาย]:
      โปรดสังเกตว่า EXO V2 cmdlet นั้นเร็วกว่า cmdlet ปกติประมาณสองเท่า ประสบการณ์ของคุณจะแตกต่างกันไปขึ้นอยู่กับสภาพแวดล้อมของคุณ แต่โดยทั่วไปแล้วควรจะเร็วกว่าและตอบสนองได้มาก

      รูปที่ 15: เวลาดำเนินการโดยใช้ Get-EXOMailbox

บทสรุป

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

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