บทนำสู่ 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").InstallationPolicySet-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 ExchangeOnlineManagementGet-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
- การลดข้อมูล: PowerShell cmdlets แบบดั้งเดิมจะส่งคืนข้อมูลทั้งหมด แม้ว่าข้อมูลทั้งหมดจะไม่แสดงก็ตาม cmdlet ของ EXO V2 ส่งคืนเฉพาะชุดย่อยของข้อมูล ซึ่งอาจท้าทายให้ผู้ดูแลระบบพิจารณาว่าพวกเขาต้องการอะไร
- ชุดคุณสมบัติ: ชุดข้อมูลที่จัดกลุ่มซึ่งสามารถส่งคืนโดย PowerShell cmdlets
- ความเร็ว: จากสองตัวอย่างก่อนหน้านี้ เมื่อรวมกันแล้วจะช่วยเพิ่มความเร็วและความน่าเชื่อถือให้กับ 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
- รับกล่องจดหมาย [ทำงานเต็มรูปแบบ ผลลัพธ์ไม่จำกัด มีกล่องจดหมายมากกว่า 7,600+ กล่อง]:
บทสรุป
แม้ว่าการเตรียมงานสำหรับ ExchangeOnlineManagement PowerShell cmdlets อาจดูค่อนข้างน่ากลัวเล็กน้อย แต่สคริปต์ที่อยู่ที่นี่จะช่วยบรรเทาปัญหาการติดตั้ง เมื่อติดตั้งแล้ว คุณจะสามารถเข้าถึงชุด PowerShell cmdlets ที่มีประสิทธิภาพได้ แม้ว่าในฐานะผู้ใช้ PowerShell ตัวยง ผู้เขียนคิดว่ายังคงมีอุปสรรคบางประการเกิดขึ้นกับ cmdlets เหล่านี้ แต่ในด้านความน่าเชื่อถือและประสิทธิภาพจะดีกว่าอย่างแน่นอน นอกจากนี้ Microsoft ยังลงทุนอย่างต่อเนื่องในการอัปเกรดประสิทธิภาพของ PowerShell ของผู้ดูแลระบบ และเราควรเห็นสิ่งเหล่านี้บางส่วนในปีหรือสองปีหน้าอย่างแน่นอน
















