PowerShell Kullanarak “Gizli” E-posta Adreslerini Arama | Ofis 365 | Bölüm 11#13
Bu yazımızda Office 365 ve Exchange Online ortamında “gizli” ya da “hayalet” e-posta adresini arayarak arama oluşturmak için PowerShell kullandığımız süreci inceliyoruz.
"Hayalet E-posta adresi" terimi teknik bir terim değildir; bunun yerine, standart Exchange Online web yönetimi arayüzünü kullanarak bulamadığımız belirli bir E-postayı bulmamız gereken bir senaryoyu tanımlamak için kullandığım bir terimdir. .
Bu duruma bir örnek, Exchange Online alıcısına bir E-posta adresi eklemek istediğimiz ve E-posta adresinin başka bir alıcıyla ilişkili olduğunu bize bildiren bir hata mesajı aldığımız bir senaryo olabilir.
Karşılaştığımız zorluk, bu E-posta adresinin sahibi olan "gizli alıcının" nasıl bulunacağıdır.
E-posta adresinin "birleşik aramasını" uygulamak için PowerShell betiğini kullanma | Exchange Online + Office 365 altyapısı
E-posta adresini bulmak için kullandığımız PowerShell sorgusu, PowerShell “ Where ifadesini” temel almaktadır.
PowerShell Where ifadesi, Exchange Online alıcısına ve Office 365 kullanıcılarına yönelik bir "arama koşulu" tanımlar.
- Exchange Online alıcısıyla ilgili olarak EmailAddresse özelliğini sorgulayacağız.
- Office 365 kullanıcı hesabıyla ilgili olarak ProxyAddresses özelliğini sorgulayacağız ve
- UserPrincipalName özelliği
Aşağıdaki PowerShell komutu, tüm Exchange Online alıcılarına "adres vererek" belirli bir E-posta adresi için arama gerçekleştirir (PowerShell komutu Alıcıyı Al).
Where deyimi, Exchange Online alıcısının "EmailAddresses özelliğine" yöneliktir ve "*bob@o365info.com" metin dizesini arar.
Get-Recipient -ResultSize unlimited| Where {$_.EmailAddresses -like "*bob@o365info.com"} | FL DisplayName,EmailAddresses"Tam eşleşme" gerçekleştirmeyen "Beğen" PowerShell operatörünü kullandığımıza dikkat edin.
Teknik olarak PowerShell operatörünü eq (eşit) kullanabileceğimize rağmen ben PowerShell operatörünü “Beğen” kullanmayı tercih ediyorum çünkü Office 365 tabanlı ortamda “E-posta” aradığımız adres şu şekilde “ortaya çıkabilir”:
- SMTP E-posta adresi
- SIP E-posta adresi
- Office 365 UPN adı
PowerShell operatörünü eq (equal) kullanacaksak, aradığımız dizeyi tam olarak sağlamamız gerekecek.
Örneğin, bob E-posta adresi'ni aramak istiyorsak aşağıdaki gibi bir sözdizimi kullanmamız gerekir:
Where {$_.EmailAddresses -eq "smtp:bob@o365info.com"}Belirli bir E-posta adresini veya belirli bir UPN adını arayarak "birleşik arama" gerçekleştirmek için bir PowerShell betiği kullanma.
Aşağıdaki PowerShell betiğinin amacı, Azure Active Directory altyapısını ve Exchange Online altyapısını sorgulayacak “birleşik” bir arama yapmamıza yardımcı olmaktır.
- Komut dosyası, tüm kullanılabilir Exchange Online alıcılarına ve Office 365 kullanıcılarına "adres" verir ve E-posta adresi veya UPN adı hakkında bilgi içeren belirli özellikleri sorgular.
- PowerShell betiği, belirli bir E-posta adresini arayarak arama sorgusu koşulunu tanımlayan "Nerede ifadesini" kullanır. (Scripti çalıştırırken aradığınız “E-posta adresini” yazmanız gerekecektir).
- PowerShell'in belirli E-posta adresini kullanan Office 365 kullanıcısını veya Exchange Online alıcısını bulması durumunda bilgiler ekranda görüntülenecektir.
Menü tabanlı bir PowerShell betiği kullanma.
Eğer karmaşık sözdiziminden “korkuyorsanız”, Office 365 PowerShell betiğinde kullanımı kolay E-posta adreslerini yönetme betiğini hazırladım.
PowerShell betiği, Azure Active Directory + Exchange Online'a gerekli uzak PowerShell bağlantısını oluşturmanıza ve belirli menü numarasını seçerek gerekli aramayı yürütmenize yardımcı olacaktır.
Uzak PowerShell oturumu oluşturma.
PowerShell'i kullanarak Exchange Online'a bağlanmanız gerekecektir.
Belirli bir E-posta adresini arama | arama kapsamı=Exchange Online
Aşağıdaki PowerShell betiği örneği, yalnızca Exchange Online altyapısına yönelik bir arama gerçekleştirir. Arama, mevcut tüm Exchange Online alıcılarına yöneliktir ve belirli bir e-posta adresini arar.
$Alias = Read-Host "Type the name of the E-mail address that you are looking for "
# Exchange Online infrastructure
$SoftDeleted = Get-Mailbox -SoftDeletedMailbox | Where { $_.EmailAddresses -like "*$Alias" }
$UnifiedGroups = Get-UnifiedGroup | Where { $_.EmailAddresses -like "*$Alias" }
$AllRecipients = Get-Recipient -ResultSize unlimited | Where { $_.EmailAddresses -like "*$Alias" }
if ($SoftDeleted -eq $null) {
write-host "The E-mail address $Alias, is not a Soft Deleted Exchange Online mailbox"
}
Else {
write-host --------------------------------------------------------
write-host "The E-mail address $Alias, belong to Unified Group"
write-host Recipient display name is- $AllRecipients.DisplayName
write-host Recipient E-mail addresses are - $AllRecipients.EmailAddresses
write-host Recipient Type is - $AllRecipients.RecipientType
write-host -------------------------------------------------------
}
if ($UnifiedGroups -eq $null) {
write-host "The E-mail address $Alias, is not a Unified Group"
}
Else {
belong to Soft Deleted Exchange Online mailbox
}
if ($AllRecipients -eq $null) {
write-host "The E-mail address $Alias, is not Exchange Online recipient "
}
Else {
write-host --------------------------------------------------------
write-host "The E-mail address $Alias, belong to Exchange Online Recipient"
write-host Recipient display name is- $AllRecipients.DisplayName
write-host Recipient E-mail addresses are - $AllRecipients.EmailAddresses
write-host Recipient Type is - $AllRecipients.RecipientType
write-host -------------------------------------------------------
}Bir sonraki makalede PowerShell kullanarak E-posta adreslerini kaldırma | Ofis 365 | Bölüm 12#13.
