Get-EXOMailbox Cmdlet'ini Kullanmak için Exchange Online Komut Dosyalarınızı Yükseltin
Get-Mailbox'ı Bırakın; Zamanı gelmişti
Microsoft'un dünyayı Microsoft 365 Gruplarının daha iyi olduğuna ikna etme çabalarına rağmen, dağıtım listelerinin neden hala bu kadar değerli olduğunu düşündüğümü açıklamak için yakın zamanda New-DistributionGroup cmdlet'i hakkında yazdım. Bugün, birçok kişinin PowerShell aracılığıyla Exchange ile çalışma deneyimine yönelik daha da temel bir cmdlet'i tartışmak istiyorum: Get-Mailbox. Daha doğrusu, yeni ve gelişmiş Get-ExoMailbox.
Microsoft, çok iyi bir nedenden ötürü, Remote PowerShell (RPS) yerine REST API'lerini (Microsoft Graph gibi) kullanmak üzere 2019'da yükseltilen dokuz ilk cmdlet'ten biri olarak Get-ExoMailbox'ı tanıttı. Posta kutusu kümelerini işlemek üzere getirmek, herhangi bir Exchange yöneticisi için temel bir etkinliktir. Get-Mailbox çalışır, ancak özellikle büyük nesne kümeleriyle uğraşırken yavaştır ve hataya açıktır. Bu bakımdan diğer Remote PowerShell cmdlet'leriyle aynı kusurları paylaşıyor. Get-Mailbox'ın bu kadar çok veriyi işlemek için bu kadar sık kullanılması, emsallerine göre daha sorunlu görünmesine neden oluyor. Gerçekten değil. Bunun yerine, Get-Mailbox, tüm oturum boyunca kullanılabilir kalabilecek veya kalmayabilecek, adlandırılmış bir uzak sunucuya yapılan bağlantıya bağlı olarak ortaya çıkan tüm kusurları ortaya çıkarır.
Çevrimiçi PowerShell Mutluluğunu Değiştirmenin Üç Adımı
Her durumda, şu ana kadar Exchange Online komut dosyalarını şuna dönüştürmüş olmanız gerekir:
- Remote PowerShell yerine Exchange Online Management modülünü kullanın.
- Uyumluluk uç noktasına bağlanmak için Connect-IPPSSession cmdlet'ini kullanın. Exchange Online Management modülünün mevcut sürümü, Exchange yönetimi ve uyumluluğuna bağlı eşzamanlı oturumlara izin verir.
- Bunun yerine Get-ExoMailbox'ı kullanmak için Get-Mailbox'i kapatın ve aynı anda diğer önemli cmdlet'leri değiştirin. Yapılması gereken en acil üç anahtar Get-ExoMailboxStatistics, Get-ExoMailboxFolderStatistics ve Get-ExoMailboxPermission'dur.
Exchange Online Management modülü ve REST tabanlı cmdlet'ler şirket içi Exchange için mevcut değildir. Exchange Online'ın altyapısının çalışma şekli, Remote PowerShell'de şirket içi dağıtımlarda meydana gelmeyen bazı kusurları ortaya çıkardı; bu nedenle Microsoft, yeni cmdlet'leri henüz oraya taşımadı. Bu hiç olacak mı? Bilmiyorum ama tahmin etmeye zorlansaydım hayır derdim. Ama asla asla deme.
Exchange Online Management Sürüm 2.0.5
Sürümlerden bahsetmişken Microsoft, Exchange Online Management modülünün V2.0.5'ini 10 Mayıs'ta yayımladı. Modülün sürüm notlarını hâlâ güncellemediler, dolayısıyla yeni sürümde neler olduğunu bilmiyoruz. Her durumda, geçen hafta 2.0.5'i çalıştırıyordum ve her şey stabil görünüyor. 70.000'den fazla kişi 2.0.5'i indirdi ve şu ana kadar herhangi bir sorun duymadım.
Posta Kutusu Verilerini Optimize Etme
Get-ExoMailbox'a dönersek, defalarca duyduğum en büyük yükseltme sorunu, posta kutusu verilerini alırken Özellikler'i belirtme ihtiyacıdır. Bu, posta kutusu verilerinin alınmasını optimize etmek için uygulanan Get-Mailbox üzerindeki davranış değişikliğidir. Sorun, bir posta kutusunun özelliklerinin, bazılarının Azure AD ile getirilmesi veya doğrulanması gereken yüzlerce farklı öğeyi kapsamasıdır. Eğer şöyle bir şey yaparsanız:
Get-Mailbox -Identity TRedmondPosta kutusu için her özelliği getirirsiniz. Ama eğer koşarsan:
Get-ExoMailbox -Identity TRedmondExchange Online yalnızca 15 mülkü alır. Bunlar görünen ad, kullanıcı asıl adı, e-posta adresleri ve çok az kullanılan HariciDirectoryObjectId gibi en önemlileridir. Bu, posta kutusunun sahibi olan Azure AD hesabının işaretçisidir (GUID). Azure AD'ye bağlı tüm Exchange Online posta özellikli nesneler, Azure AD'ye bağlanmayı kolaylaştırmak için bu özelliğe sahiptir. Nesnelere referans vermek için GUID'lerin kullanılması, Office 365'te, özellikle de bir nesne hakkında veri almak için yapılan her Graph API çağrısında çok yaygındır; bu nedenle, GUID'leri kullanmaya alışmak iyidir.
Örneğin şunu yapabilirim:
Get-AzureADUser -ObjectId ((Get-ExoMailbox -Identity Tony.Redmond@office365itpros.com).ExternalDirectoryObjectId) | Select ObjectId, DisplayName
ObjectId DisplayName
-------- -----------
f1dbb86a-69bf-4245-8bc7-5e1d09d9d8cc Tony Redmond (Office 365 for IT Pros)
Azure AD tarafından döndürülen ObjectId'yi alıp Get-ExoMailbox ile kullanabilirim:
Get-ExoMailbox -Identity f1dbb86a-69bf-4245-8bc7-5e1d09d9d8ccGet-ExoMailbox ne getirdiği konusunda dikkatli olduğundan, çağrılarınıza genellikle tek tek özellikleri veya özellik kümelerini getirmek için istekler eklemeniz gerekir (özellik kümesi, kotalar gibi belirli bir amaç için ortak olan özelliklerin bir koleksiyonudur) ). Örneğin, WhenCreated özelliği temel 15 özellikten biri değil, bu yüzden onu kullanmak istiyorsam onu çağrıya dahil etmeliyim:
Get-ExoMailbox -Identity TRedmond -Properties WhenCreatedBüyük Faydalar
Get-ExoMailbox'a geçmenin faydaları şunlardır:
- Özellikle çok sayıda posta kutusunu işlerken daha iyi performans. Kilometreniz ne yaptığınıza bağlı olarak değişecektir, ancak yeni cmdlet'leri Microsoft Ignite 2019'da halka açık olarak test ettiğimde, binlerce posta kutusunu işlemek için hız artışının üç ila dört kat daha hızlı olduğunu gördüm. Yalnızca birkaç posta kutusu getirirseniz pek bir fayda görmezsiniz. Ölçeğin diğer ucunda, çok büyük miktarlarda posta kutularını işlemek için Graph API'leri daha iyi bir çözüm olabilir.
- Daha iyi güvenilirlik. Get-ExoMailbox ve diğer REST tabanlı cmdlet'ler sunucu sorunlarını daha iyi çözebilmektedir. Binlerce posta kutusunu getirmenin ortasındaysanız, Exchange Online'ın etki alanı denetleyicilerini değiştirmesi isteyeceğiniz son şey olacaktır (bu, bulutta bile olur). Uzak PowerShell başarısız olur. Get-ExoMailbox muhtemelen başarıyla tamamlanacaktır (hatalar her zaman tahmin edilemez).
Yönetici özeti, komut dosyalarını yeni cmdlet'leri kullanacak şekilde dönüştürmede yaşanan bazı kısa vadeli sıkıntıların, performans ve güvenilirlik açısından uzun vadeli kazanımlarla defalarca geri ödeneceğidir. Yapılması gereken en doğru şey budur ve eski cmdlet'leri kullanarak kod yazmayı öneren herkesten, seçeneklerini biraz güçlü bir şekilde yeniden değerlendirmeleri istenmelidir.
Exchange Online Management modülünün Ubuntu Linux'u desteklediğinden bahsetmiş miydim? Belki bu seyirci için o kadar da önemli değil ama doğru.