Outlook Kişilerini Grafik API'sıyla Önceden Doldurma
Pek çok kuruluşun artık kullanıcıların her yerden ve her cihazdan çalışmasına izin vermesiyle birlikte, yeni zorluklar da gün yüzüne çıktı. Örneğin, ofis dışından çalışan yeni kullanıcılar, BT Hizmet Masası, İK ve diğer dahili hizmetlerle nasıl iletişim kuracaklarını bilmenin avantajından yararlanır.
Bu bilgilere genellikle Genel Adres Listesi'nde (GAL) kolayca ulaşılabilir. E-posta istemcilerinin genellikle GAL'ye erişimi olmadığından bu bilgiyi mobil cihazda bulmak daha zor hale gelir. Örneğin, Outlook mobile yalnızca özel kişileri cihazla senkronize eder.
Sorunu çözmek için, bir CSV dosyasından bir dizi standart kişiyi okumak ve bunları kişisel kişiler olarak kullanıcı posta kutularına yazmak için bir PowerShell betiği oluşturdum. Mobil cihazlar daha sonra bu kişileri kullanıcı tarafından oluşturulan diğer kişilerle senkronize edebilir.
Kayıtlı Uygulama Oluşturma
Betik, kişileri sağlamak için Graph API'yi kullanıyor, bu nedenle izinleri ve kimlik doğrulamayı tutmak için Azure AD'de kayıtlı bir uygulamaya ihtiyacımız var (Grafik'i PowerShell ile kullanmanın başka bir örneği). Azure AD Portalında yeni bir Uygulama Kaydı oluşturun ve Contacts.ReadWrite uygulama iznini ekleyin. Komut dosyasının tüm kullanıcıların kişilerine erişmesine izin vermek için yönetici izni verdiğinizden emin olun:
Uygulama özelliklerine geri döndüğümüzde, Genel Bakış sayfasındaki Uygulama (istemci) kimliğini ve Dizin (kiracı) kimliğini not edin:
Son olarak Sertifikalar ve Sırlar sayfasını açın ve yeni bir istemci sırrı oluşturun. Sırrın değerini not edin. Uygulama tanımlayıcısı, kiracı tanımlayıcısı ve uygulama sırrının birleşimi, komut dosyamızın kullanıcı posta kutularıyla etkileşim kurmak için kimlik doğrulaması yapmasına ve atanan izni kullanmasına olanak tanır.
Not: Bu sır, uygulama kaydının kimliğini doğrulamak için kullanıldığından, bu sırrı bir şifre gibi kullanın ve onu düz metin olarak saklarken dikkatli olun.
Kişi İçe Aktarma Dosyasını Hazırlayın
Komut dosyası, kişiler listesini bir CSV dosyasından okur. GitHub'da örnek bir dosya mevcuttur ve aşağıdaki sütunları içerir:
- asistanAdı
- işAnaSayfa
- işTelefonları
- Firma Adı
- departman
- e-postaAdresi
- isim
- iş unvanı
- ikinci ad
- takma ad
- meslek
- kişiselNotlar
- soyadı
- başlık
Bu değerlerin her biri doğrudan Outlook'un iletişim sayfasında gördüğünüz değerle eşleşir. Tüm değerler isteğe bağlıdır; bu nedenle gerekmiyorsa boş bırakmanız yeterlidir. Örnek bir giriş dosyada zaten doldurulmuştur ve ilk girişinizle değiştirilebilir. CSV'ye istediğiniz kadar giriş ekleyebilirsiniz. Komut dosyası, CSV'deki her öğeyi hedef posta kutusuna özel kişi olarak ekleyecektir:
Komut dosyasını çalıştırma
İçe aktarma dosyası hazırlandıktan sonra betiği GitHub'dan indirin ve yerel olarak kaydedin. Komut dosyası aşağıdaki parametreleri gerektirir:
- Posta Kutusu - Bu, hedef posta kutusunun UPN'sidir.
- CSVPath - Bu, içe aktarılan CSV'nin tam yoludur.
- ClientID - Bu, kayıtlı uygulamanın Uygulama Kimliğidir.
- ClientSecret - bu daha önce oluşturulan Gizli değerdir.
- TenantID - Bu, kiracının Dizin Kimliğidir.
Eldeki her parametreyle, hedef posta kutusunun UPN'si belirtilerek komut dosyası tek bir kullanıcı için çalıştırılabilir:
##Declare Parameters##
$mailbox = adminseanmc@adminseanmc.com
$clientSecret = <Client Secret Value>
$clientID = <Application (Client) ID Value>
$tenantID = <Directory (Tenant) ID Value>
$CSVPath = <Full path to the import CSV>
##Run Script##
.\graph-PopulateContactsFromCSV.ps1 -Mailbox $mailbox -ClientSecret $clientSecret -ClientID $clientID -TenantID $tenantID -CSVPath $csvPath
Komut dosyası, her bir kişinin ayrıntılarını, sağlandığı şekliyle JSON biçiminde gösterir:
Bazı ek mantıklar, komut dosyasının kişi kümesini tüm posta kutularına eklemesine olanak tanır. Bunun için Exchange Online Management Shell’e bağlanın ve aşağıdaki gibi çalıştırın. Bu, ortamdaki tüm kullanıcı posta kutularının bir listesini alacak ve ardından her biri için içe aktarma komut dosyasını çalıştıracaktır:
##Declare Parameters##
$clientSecret = <Client Secret Value>
$clientID = <Application (Client) ID Value>
$tenantID = <Directory (Tenant) ID Value>
$CSVPath = <Full path to the import CSV>
##Run Script##
$mailboxes = Get-EXOMailbox -resultsize unlimited -RecipientTypeDetails usermailbox
Foreach($mailbox in $mailboxes){
.\graph-PopulateContactsFromCSV.ps1 -Mailbox $mailbox.UserPrincipalName -ClientSecret $clientSecret -ClientID $clientID -TenantID $tenantID -CSVPath $csvPath
}
Komut dosyası tamamlandığında kişiler kullanıcıların özel kişilerinde olacak ve cihazlarıyla senkronize edilmeye hazır olacak:
Özet
Az miktarda hazırlık çalışmasıyla bu komut dosyası, herhangi bir sayıda kullanıcı için kişileri doldurmayı çok kolaylaştırır. Yeni kişiler mobil cihazlarla senkronize edilebilir ve her yerden erişilebilir.
Hem komut dosyası hem de içe aktarma dosyası örneği GitHub'da mevcuttur.
Not: Her zaman olduğu gibi, herhangi bir kodu üretim ortamında çalıştırmadan önce inceleyip test ettiğinizden emin olun.




