Microsoft Graph PowerShell SDK Bölüm III'e Giriş: Exchange Online ve SharePoint Online ile Etkileşim


Basit Yönetim Görevlerinin Ötesine Geçmek

Bu serinin II. Bölümünde Microsoft Graph ve Graph PowerShell SDK'nın yöneticilerin Microsoft 365'in birçok yönünü tek bir modülden yönetmesine nasıl olanak tanıdığını inceledim. Biraz PowerShell deneyimiyle SDK, standart yönetim görevlerini ve raporlamayı nispeten kolaylaştırır.

Bu işlevselliğin tek bir yerde olması güzel olsa da Microsoft 365'i PowerShell aracılığıyla yönetmek çoğu yönetici için eski bir haberdir. Graph SDK'nın diğer yöntemlere göre avantajı, Graph API'nin tüm avantajlarından yararlanabilmesi ve yöneticilerin Exchange Online ve SharePoint Online gibi Microsoft 365 hizmetleriyle etkileşimde bulunmasına olanak sağlamasıdır. öğrenmek için daha fazla zaman yatırımı.

Elveda EWS

Exchange Web Hizmetleri (EWS), Exchange Server 2007'den bu yana Microsoft Exchange'in ayrılmaz bir parçası olmuştur. EWS, posta kutuları gibi Exchange kaynaklarına programlı erişimi destekler. 2018 yılında Exchange Ekibi, artık Exchange Online için EWS'ye aktif olarak yatırım yapmayacaklarını duyurdu ve uygulama sahiplerinin ve satıcıların Microsoft Graph'a geçiş yapmalarını önerdi. Bunu 2021'de API amortismanları izledi ve bu da EWS'nin sonunun yaklaştığının sinyalini verdi.

Posta Öğeleriyle Etkileşim Kurma

Yaygın bir EWS görevi, posta kutusundaki postaları almak ve işlemektir. Microsoft Graph PowerShell SDK, mesajlarla ilgili çeşitli cmdlet'lerle bu işlemi kolaylaştırır. Örneğin, aşağıdaki komut bir kullanıcının posta kutusundaki tüm öğeleri alır.

Not: Yetkilendirilmiş izinlerin kullanılması bu serinin I. bölümünde ayrıntılı olarak açıklandığı gibi yalnızca kendi posta kutunuz gibi hesabınızın erişim sahibi olduğu öğeleri almanıza olanak tanır. Erişiminizin olmadığı diğer posta kutularına ve kaynaklara erişmek için uygulama izinlerinin kullanılması gerekir. Varsayılan olarak SDK her zaman devredilen izinleri kullanır. Uygulama izinlerini kullanma hakkında daha fazla bilgi edinmek için bu serinin I. bölümüne göz atın.

Get-MgUserMessage -UserId <UserID> -All

Posta kutusundaki tüm öğeleri iade etmek güzel bir testtir ancak bir görevi tamamlamak için kod oluştururken pek pratik değildir. Cmdlet'in yürütme süresini iyileştirmek ve yalnızca ilgili nesneleri döndürmek için sonuçları filtrelemenin birkaç yolu vardır. İlk olarak, yalnızca belirli bir klasördeki öğeleri döndürebiliriz. Get-MgUserMailFolder cmdlet'i bir posta kutusundaki en üst düzey klasörleri döndürür ve Get-MgUserMailFolderChildFolder cmdlet'i bir klasörün alt klasörlerini döndürür. Şekil 1'de Gelen Kutusu klasörünün benzersiz kimliğini buluyoruz ve bunu İşlenecek Postalar alt klasörünün kimliğini almak için kullanıyoruz. Her posta öğesi ve klasörün, Exchange Online tarafından atanan ve öğenin kimlik özelliğinde saklanan benzersiz bir kimliği vardır.

Get-MgUserMailFolderMessage cmdlet'i, belirtilen klasörde bulunan posta öğelerini döndürür. Bu sonuçlar daha sonra aşağıdaki söz dizimi kullanılarak filtrelenebilir veya daha da daraltılabilir.

##Return all messages in a particular folder
Get-MgUserMailFolderMessage -MailFolderId AAMkAGI4NjhmMDBjLTcyNTEtNDZkYy1hMmNhLTZjMThjYjQxODIzZgAuAAAAAAAdY2Aq0HOqRqKvhWSGlIAmAQDcQ9TSiMrlRrOhGqycky_7AABCa1F8AAA= -UserId ffcf3b2c-83d0-4e5f-a432-6d6a740a99d1 -All | fl subject,id
##Search messages in a particular folder for the word “PIM”
Get-MgUserMailFolderMessage -MailFolderId AAMkAGI4NjhmMDBjLTcyNTEtNDZkYy1hMmNhLTZjMThjYjQxODIzZgAuAAAAAAAdY2Aq0HOqRqKvhWSGlIAmAQDcQ9TSiMrlRrOhGqycky_7AABCa1F8AAA= -UserId ffcf3b2c-83d0-4e5f-a432-6d6a740a99d1 -All -Search "PIM" | fl subject,id,ReceivedDateTime
##Filter messages in a particular folder by receivedDateTime and by subject starting with “Your weekly PIM digest'”
Get-MgUserMailFolderMessage -MailFolderId AAMkAGI4NjhmMDBjLTcyNTEtNDZkYy1hMmNhLTZjMThjYjQxODIzZgAuAAAAAAAdY2Aq0HOqRqKvhWSGlIAmAQDcQ9TSiMrlRrOhGqycky_7AABCa1F8AAA= -UserId ffcf3b2c-83d0-4e5f-a432-6d6a740a99d1 -All -Filter "(receivedDateTime gt 2022-10-01T00:00:00Z) and (startswith(Subject,'Your weekly PIM digest'))" | fl subject,id,ReceivedDateTime

Şekil 2'de gösterildiği gibi, filtreleri ve aramayı Get-MgUserMailFolderMessage gibi cmdlet'lerle birleştirmek sonuçları daraltır ve tam olarak istediğimizi almamızı sağlar.

Daha Fazla Bilgi Edinin: Posta kutusu öğelerini Graph SDK ile değerlendirme hakkında daha fazla bilgi edinmek için PowerShell ve Grafik ile Posta Kutusu İçerik Raporu Oluşturma hakkındaki bu makaleye göz atın.

Öğeler JSON biçiminde, posta öğeleri ise ileti kaynağı türü olarak döndürülür. Kaynak türü, belirli bir nesne için önceden tanımlanmış bir biçimdir (JSON'da), mesaj kaynak türü nesnesinin şeması Grafik belgelerinde ayrıntılı olarak açıklanmıştır.

Graph SDK ayrıca mevcut posta öğelerinin Update-MgUserMessage cmdlet'iyle değiştirilmesini de destekler. Aşağıda gösterilen kodda, bir mesaj tanımlayıcıyla tanımlanan mesajın konusunu güncelliyoruz:

##Modify the subject of a message
Update-MgUserMessage -MessageId AAMkAGI4NjhmMDBjLTcyNTEtNDZkYy1hMmNhLTZjMThjYjQxODIzZgBGAAAAAAAdY2Aq0HOqRqKvhWSGlIAmBwDcQ9TSiMrlRrOhGqycky_7AABCa1F8AADcQ9TSiMrlRrOhGqycky_7AABCa4w1AAA= -UserId ffcf3b2c-83d0-4e5f-a432-6d6a740a99d1 -Subject "Updated message subject"

Move-MgUserMessage cmdlet'i bir postayı hedef klasöre taşıyacaktır. Şekil 3'te mevcut bir posta öğesinin kimliğini alıyoruz, Gelen Kutusu klasörünün kimliğini alıyoruz ve postayı bu klasöre taşıyoruz.

Mevcut posta öğelerini değiştirmeye yönelik kullanım durumları, test dışında oldukça sınırlıdır. Daha pratik olanı doğrudan PowerShell'den e-posta gönderebilme yeteneğidir. PowerShell için Microsoft Graph SDK'sını Kullanarak Exchange Online E-postasının nasıl gönderileceğini açıklayan bu makale, doğrudan PowerShell'den posta göndermek için Graph SDK'nın nasıl kullanılacağını gösterir.

SharePoint Online'la çalışma

Dosya ve site yönetimi ve raporlama, Microsoft Graph'ın bir diğer önemli avantajıdır. PowerShell aracılığıyla SharePoint Online (ve buna bağlı olarak Teams ve OneDrive) üzerinden dosya ve sitelerle etkileşim kurmak, önceden SharePoint PnP PowerShell modülü veya SharePoint İstemci Tarafı Nesne Modeli (CSOM) hakkında bilgi sahibi olmayı gerektiriyordu; deneyimli değilseniz bunların hiçbiri özellikle sezgisel değildir. SharePoint geliştirmede.

Microsoft Graph, SharePoint Online ile etkileşim için uç noktaları ortaya çıkarır ve PnP veya CSOM'un sahip olduğu derinliğe sahip olmasa da (örneğin site şablonları oluşturma), kiracı yöneticilerinin gerçekleştirmesi gereken görevlerin çoğu tam olarak desteklenir.

Grafiğin SharePoint Online'da yöneticilere nasıl yardımcı olabileceğinin bir örneği, SharePoint Online Sitesinde Dosya Raporu Oluşturmak için Grafik API'lerinin nasıl kullanılacağını anlatan bu makaledir. Bu makaledeki kod ilk olarak belirli bir siteye bağlı sürücülerin (Belge Kitaplıkları) listesini ve "Belgeler" kitaplığı için filtreleri getirir. Buradan, yararlı bir rapor oluşturmak için kök altındaki dosya ve klasörleri genişletir.

Bu komut dosyası, Drives uç noktasını sorgulamak ve tüm kitaplıkları döndürmek için PowerShell SDK'sındaki Invoke-MgGraphRequest cmdlet'ini kullanır. Invoke-MgGraphRequest , bildiğiniz uç noktalara veya yerel PowerShell SDK cmdlet'i olmayan uç noktalara karşı sorgu çalıştırmanın harika bir yoludur.

Aynı sonuçlar Get-MgSiteDrive cmdlet'i kullanılarak da elde edilebilir, ancak cmdlet'te bazı incelikler vardır. Örneğin, Get-MgSiteDrive'i belirli bir siteye karşı çalıştırmak, sitenin /drive uç noktasını sorgulayacaktır. /drive uç noktası yalnızca bir sitenin varsayılan Belge Kitaplığını döndürür. Bu, Şekil 4'te, Grafik API İsteklerini Açığa Çıkarmak için Microsoft Graph PowerShell SDK Cmdlet'leri için Hata Ayıklama parametresinin kullanılmasıyla ilgili bu makalede anlatıldığı gibi, SDK'nın hata ayıklama özelliğinin kullanıldığı gösterilmektedir.

Bir siteye bağlı tüm Drive'ları geri döndürmek için -All parametresini eklememiz gerekir. Bu parametre, sorgulanan uç noktayı /drives yerine /drives olarak değiştirir. URI'deki bu ince değişiklik (bir komut dosyasının neden beklendiği gibi çalışmadığını giderirken bunu fark etmek zordur), sonuç kümesini varsayılan kitaplıktan tüm kitaplıklara değiştirir. -All parametresinin mevcut olduğu URI Şekil 5'te gösterilmektedir.

Bu nüans (veya özelliği, belgelerden söylemek zor) nispeten küçüktür, ancak PowerShell SDK'nın bazı pürüzlü yönlerini göstermeye başlar. SDK halen devam eden bir çalışmadır ve geliştirilmiş dokümantasyon ve cmdlet'lerle doğrudan desteklenen daha fazla uç nokta ile zaman içinde olgunlaşacağına şüphe yoktur. O zamana kadar boşlukları dolduracak her zaman Invoke-MgGraphRequest cmdlet'i vardır.

Başka bir örnek, bir sürücüdeki dosyaların listelenmesidir. Get-MgDriveItem cmdlet'i burada gerekeni yapması gerekiyor gibi görünüyor, ancak bu cmdlet, belirli öğeleri döndürmek için kullanılan /drive/driveid/items uç noktasını kullanıyor, tüm öğeleri listelemeyin. Komut dosyasında https://graph.microsoft.com/v1.0/sites/$ ($Site.Id)/drives/$ ($DocumentLibrary.Id)/root/children URI'si kullanılır Invoke-MgGraphRequest cmdlet'ini kullanırsanız işin mükemmel şekilde yapılmasını sağlarsınız.

Özet

Graph PowerShell SDK, yöneticilerin Microsoft 365 iş yükleriyle, önemli miktarda zaman yatırımı olmadan daha önce pratik olmayan yollarla etkileşim kurması için harika bir araçtır. SDK, Microsoft Graph'ı kullanmaya başlamak için pek çok olasılığın önünü açıyor ancak geliştirilmesi gereken bazı alanlar var.

Karmaşık çözümler oluşturmak için Graph API'nin inceliklerini öğrenmenin yerini almasa da SDK, çok fazla zaman harcamanıza gerek kalmadan başlamanın ve standart görevleri yerine getirmenin harika bir yoludur.

Active Directory için Siber Güvenlik Risk Yönetimi

Bu Siber Güvenlik Risk Yönetimi Çözümleri aracılığıyla AD saldırılarını nasıl önleyeceğinizi ve bu saldırılardan nasıl kurtulacağınızı keşfedin.

İlgili makaleler