Filtrelenmiş arama oluşturmak için PowerShell " Where ifadesini " kullanma | Office 365 ve Exchange Online nesneleri | Bölüm 1#3


Güncel makale serisi, Office 365 (Azure Active Directory) ve Exchange Online nesneleri hakkındaki bilgilerin “görüntülenmesi” için PowerShell'in kullanılması konusuna ayrılmış üç makale içermektedir.

  1. İlk makale, belirli karakterlere sahip nesneler hakkında bilgi almak için “filtre” olarak kullandığımız PowerShell “ Where ifadesi”ne temel bir giriş içermektedir.
  2. İkinci makale, Office 365 (Azure Active Directory) ortamında arama sonuçlarının filtrelenmesi konusunda birçok örnek içermektedir. Vereceğim örnek daha çok “Office 365 nesneleri” ile ilgili olacak.
  3. Üçüncü makale, Exchange Online ortamında arama sonuçlarını filtrelemenin birçok örneğini içermektedir. Vereceğim örnek, Exchange Online "Posta Kutusu nesnesi" ve Exchange Online'ın farklı türdeki alıcılarıyla ilgili olacaktır.

Office 365 ve Exchange Online nesnelerini görüntülemek için PowerShell'i kullanın | Makale serisi

Makale serisi aşağıdaki makaleleri içermektedir:

  1. Filtrelenmiş arama oluşturmak için PowerShell " Where ifadesini " kullanma | Office 365 ve Exchange Online nesneleri (bu makale)
  2. Office 365 nesnelerini görüntülemek için PowerShell'i kullanın
  3. Exchange Online nesnelerini görüntülemek için PowerShell'i kullanın

Neden bir Filtre Araması oluşturmamız gerekiyor?

Herhangi bir altyapıyı yöneten her Yöneticinin temel ihtiyaçlarından biri, "belirli bir nesneyi" arama (arama) ve bu nesneler üzerinde bazı "eylemler" gerçekleştirme yeteneğidir.

Terim - “nesneler.”

Office 365 ve Exchange Online'da "nesneler" terimi, -Azure Active Directory kullanıcı hesapları, Exchange Online posta kutuları, Ortak Klasörler, Gruplar vb. gibi çeşitli türdeki nesnelere çevrilebilir.

Terim - bir tür "eylem" gerçekleştirir.

Bazı eylemleri gerçekleştirmenin anlamı da sonsuz sayıda örneğe çevrilebilir.

Çoğu senaryoda, belirli "nesneleri" aramamız ve ardından "nesneler üzerinde" aşağıdaki gibi bir yönetim görevi gerçekleştirmemiz gerekecektir:

  • Belirtilen nesnelerin bazı özelliklerini güncelleyin.
  • Belirtilen nesnelerde belirli bir özelliği etkinleştirin.
  • Belirtilen nesnelerle ilgili bilgileri Metin, CSV ve HTML gibi dosyalara aktarın.

“Filtrelenmiş Arama” sonuçlarıyla ne yapmalı?

“Filtrelenmiş Arama” gerçekleştirmek için PowerShell'i kullandığımızda sonuçları aşağıdaki yollardan biriyle kullanabiliriz:

1. Arama Sonuçlarını PowerShell konsolunda görüntüleyin

Bu senaryoda amacımız sadece PowerShell konsolunda görüntülenecek bir “soruya” “cevap” almaktır. Örneğin, lisansı olmayan tüm Office 365'i bana göster, "Paylaşılan posta kutusu" olarak kabul edilen tüm Exchange Online posta kutularını göster vb.

2. Arama sonucunu bir değişkene kaydedin

Bu senaryoda amacımız “PowerShell Filtreli Arama”ya dahil olan her nesne için “bir şeyler yapmak”tır.

İlk adım, "PowerShell Filtrelenmiş Arama"nın sonucunu "tutacak", "geçici depo" görevi gören bir PowerShell değişkeninin tanımlanmasıyla gerçekleştirilir.

Bir sonraki adımda PowerShell'den “Filtrelenmiş Arama sonuçları” dizisinde yer alan nesnelerin her birini “getirmesini” ve ardından bu nesnelerin her birine “bir şeyler yapmasını” istiyoruz.

Örneğin

  1. Lisansı olmayan Office 365 kullanıcılarının “PowerShell Filtreli Aramasını” oluşturun.
  2. “PowerShell Filtreli Arama”dan aldığımız bilgileri bir değişkende saklayın.
  3. Oluşturulan değişkende depolanan bilgilere "erişecek", "kullanıcı hesapları" hakkındaki bilgileri getirecek ve Office 365 kullanıcılarının her biri için Office 365 lisansları atayacak ek PowerShell komutunu kullanın.

3. Arama sonucunu çeşitli dosya türlerine aktarın

Bu senaryoda amacımız, “PowerShell Filtreli Arama”dan aldığımız bilgileri, bilgileri - TEXT, CSV ve HTML gibi çeşitli dosya formatlarına aktararak daha sonra kullanmak üzere kaydetmektir.

"Filtrelenmiş Arama" oluşturmak için PowerShell Where-Object ifadesini kullanma

Filtrelenmiş arama sorgusu gerçekleştirme görevi için kullandığımız araç aşağıdaki PowerShell cmdlet'idir.

Where-Object

Not: Mevcut makale serimizde, Where-Object yerine daha kısa olan Where biçimini kullanıyoruz. “ Where ifadesini” tanımlamak için kullanabileceğimiz diğer bir seçenek ise 'Nerede' veya 'Nerede-Nesne' yerine soru işareti karakterlerini '?' kullanmaktır.

Where-Object PowerShell cmdlet'i, diğer PowerShell cmdlet'leri tarafından döndürülen verileri filtrelememiz için bize bir yol sağlar.

Aşağıdaki diyagramda Where ifadesinin kullanıldığı PowerShell komutunun yapısını görebiliriz. ”

1. Belirli nesnelerle ilgili bilgileri "Al" sağlayan PowerShell komutu

Bu, Azure Active Directory kullanıcısı veya Exchange Online posta kutusu (1 numara) gibi belirli bir nesne türü hakkındaki bilgileri "getiren" kısımdır.

Örneğin - Get-Posta Kutusu

2. PowerShell "Nerede ifadesi" filtresi

Bir önceki komuttan aldığımız çıktıyı “filtrelemek” için PowerShell “ Where ifadesini” kullandığımız kısımdır (2 numara).

Teknik bir terim kullanmak istiyorsak önceki PowerShell komutundan “piped” olan çıktıyı kullanırız.

Her Where ifadesi küme parantezleri kullanarak filtre koşulunu başlatır ve çevreler.

3. "$" karakteri

$_ gösterimi (sayı 3), varsayılan nesneyi (yani boru hattı üzerinden aktarılan nesneyi) temsil etmek için kullanılır.

Başka bir deyişle $_ notasyonu, filtrelenmiş sorgu sonuçlarından elde ettiğimiz “nesne dizisi”nde yer alan nesnelerin her birini temsil etmek için kullanılır.

4. Aradığımız spesifik mülk

Bu, “Nerede filtresi” tarafından kullanılan belirli nesne özelliğidir (4 numara).

Örneğin, Exchange Online posta kutularının “RecipientTypeDetails” özelliğine sahip olmasını ve belirli bir değer içermesini sağlayın.

Başka bir örnek şu olabilir: "Department " özelliği belirli bir değer içeren kullanıcılar hakkındaki bilgileri filtrelemek.

5. PowerShell anlama operatörü

Bu, “ Where ifadesi” (sayı 5) tarafından kullanılan “koşuldur”. Koşul, - Küçüktür, Eşittir, Eşit Değildir vb. gibi bir anlama operatörü kullanılarak tanımlanır.

Aşağıdaki tabloda PowerShell anlama operatörleri ile ilgili bilgileri görebiliriz

-lt

Daha az

-le

Küçük veya eşit

-gt

Şundan büyük:

-ge

Büyük veya eşittir

-eq

Eşittir

-ne

Eşit değil

-like

Beğenmek; desen eşleştirme için joker karakterler kullanır

6. Belirli değer

Bu, object özelliğine “dahil olan” spesifik değeri (6 sayısı) tanımladığımız son bölümdür.

Değer bir tarih, sayı, metin dizesi vb. olabilir.

Örneğin, yalnızca "Departman " özelliği "yönetici" değerini içeren kullanıcıları görüntüleyin.

PowerShell "Nerede ifadesi" örneği

Aşağıdaki örnekte, belirli bir Exchange Online posta kutusu türü hakkında bilgi almak için PowerShell “Nerede ifadesini” kullanıyoruz.

"Paylaşılan posta kutusu" olarak kabul edilen belirli bir Exchange Online posta kutusunun listesini almak için aşağıdaki PowerShell komutunu kullanacağız:

Bu örnekte, “FT” (Dosya tablosu) formatını kullanarak görüntülenecek sonuçları “boruladığımıza” ve PowerShell'e nesnelerin yalnızca - Alias ve gibi belirli özelliklerini görüntülemesi talimatını verdiğimize dikkat edin. RecipientTypeDetails.

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "SharedMailbox"} | FT Alias,RecipientTypeDetails

İlk PowerShell komutu:

Get-Mailbox -ResultSize Unlimited

Bu komutun sonucu, mevcut TÜM Exchange Online posta kutuları hakkında bilgidir.

PowerShell komutunun ikinci bölümünde (Pipe'dan sonra görünen kısım) PowerShell “ Where ifadesini” şu şekilde kullanıyoruz:

PowerShell'den önceki adımlarda elde ettiğimiz "sonuçlara bakmasını" (tüm Exchange Online posta kutularının dizisi) ve aşağıdaki koşulu karşılayan yalnızca Exchange Online posta kutularını "getirmesini" istiyoruz:

Mülkleri “RecipientTypeDetails” olarak adlandırılan Exchange Online posta kutuları, “Paylaşılan Posta Kutusu” değerine eşit bir değer içerir.

PowerShell “ Where ifadesini ” değişken kombinasyonuyla kullanma

Aşağıdaki bölümde PowerShell Where ifadesini bir değişken kombinasyonuyla kullandığımız senaryo örneğini sunmak istiyorum.

Misyonumuz aşağıdaki senaryo için bir çözüm sağlamaktır:

Kullanıcı adı "Yönetici" olan tüm Exchange posta kutuları için Exchange kullanıcısına Tam erişim izinleri atayın.

Örneğimizde, Adele'e tüm "Yönetici posta kutularına" Tam erişim izni vermek istiyoruz.

Bölüm 1#5 - Belirli Exchange nesnesi hakkında bilgi edinin

Örneğimizde tüm Exchange Online kullanıcılarının bir listesini almak istiyoruz. Kullandığımız PowerShell komutu:

Get-User

Bölüm 2#5 - Bilgileri filtrelemek için “Nerede ifadesini” kullanma

Bu kısımda PowerShell Where deyimini kullanarak sadece unvanı “Yönetici”ye eşit (eq) olan Exchange kullanıcıları hakkında bilgi alarak sonucu filtreliyoruz.

Get-User | Where {$_.Title -eq "Manager"}

Bölüm 3#5 - Değişken oluşturma ve bilgileri ve değişkeni saklama

Bu kısımda Where ifadesinin sonucunu saklayacak bir değişken oluşturuyoruz.

Tanımladığımız değişken $Managers'tır (PowerShell ortamında, bir değişkeni belirtmek için $karakterlerini kullanırız).

PowerShell komutu şu şekilde görünecektir:

$Managers = Get-User | Where {$_.Title -eq "Manager"}

Bölüm 4#5 - PowerShell ForEach Döngü operatörünü kullanma

Bu adımda, PowerShell'den dizi üyelerinin her biri (unvanı Manager'a eşit olan her kullanıcı) için bir şeyler yapmasını istediğimizi bildirmek için PowerShell ForEach “Döngü operatörünü” kullanıyoruz.

$Managers adlı değişkende saklanan bilgiler bir “dizi” olarak kabul edilir ve sonuçlara dahil olan kullanıcıların her biri “dizideki üye” olarak değerlendirilebilir.

Aşağıdaki PowerShell sözdizimini kullanacağız:

Foreach ($Member in $Managers)

ForEach Döngü operatörünü kullanırken ek bir değişken kullandığımıza dikkat edin. Örneğimizde, $Member
adlı bir değişken tanımladık. Bu değişken, belirli bir Üye hakkında bilgi tutacak, mantıksal bir kartuş olarak kullanılan yalnızca geçici bir değişkendir. $Managers adlı değişkende saklanan nesneler dizisinden aldığımız.

Bölüm 5#5 - Dizi üyelerinin her biri için gerekli komutu yürütme

Bu adımda dizide yer alan her “üye” için Adele kullanıcı adına Tam erişim izinleri atayacak PowerShell komutunu çalıştırıyoruz.

Başka bir deyişle, kullanıcısının Yönetici olarak kabul ettiği her Exchange Online posta kutusuna Adele Tam erişim izinleri atarız.

Kullandığımız PowerShell komutu:

Add-MailboxPermission "Adele" -User $Member.name -AccessRights FullAccess -InheritanceType All

Belirli bir Yönetici adını ilişkilendirmediğimize dikkat edin, bunun yerine "Ad" özelliğiyle $Member değişkenini kullanın.

PowerShell komutunun tamamı şöyledir:

$Managers = Get-User | Where { $_.Title -eq "Manager" }
Foreach ($Member in $Managers) {
    Add-MailboxPermission "Adele" -User $Member.name -AccessRights FullAccess -InheritanceType All
}

Belirli verileri bir Dosyaya aktarmak için PowerShell “ Where ifadesini ” kullanma.

Son bölümde, belirli verileri bir Dosyaya aktarmak için PowerShell “ Where ifadesini kullanma” seçeneğini incelemek istiyorum.

Kullanılan en yaygın dosya formatları:

  • Metin dosyası formatı
  • CSV (Virgülle Ayrılmış Değer) dosya formatı
  • HTML dosya formatı

Aşağıdaki şemada, filtrelenmiş arama sorgusundan elde ettiğimiz “sonuçları” çeşitli dosya türlerine aktarmak için kullandığımız PowerShell komutunun formatını görebiliriz.

PowerShell “Nerede ifadesi”ni kullanarak “Filtrelenmiş arama sorgusu” çalıştıracak PowerShell komutunun bir örneği, belirli Exchange Online posta kutusu türleri hakkında bilgi almak için PowerShell'den sorduğumuz bir komut olabilir.

Örneğin, Exchange Online posta kutuları "Paylaşılan posta kutuları" olarak kabul edilir ve ardından bilgileri çeşitli dosya formatlarına aktarır.

Aşağıdaki bölümde, verileri çeşitli dosya formatlarına aktarmak için kullandığımız PowerShell komut sözdiziminin bir örneğini görebiliriz:

Örnek 1 - PowerShell filtreli aramayı bir Metin dosyasına aktarın.

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "SharedMailbox"} | FT Alias,RecipientTypeDetails | Out-File c:\temp\file.txt

Örnek 2 - PowerShell filtreli aramayı bir CSV dosyasına aktarın.

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "SharedMailbox"} | FT Alias,RecipientTypeDetails | Export-CSV c:\temp\file.csv

Örnek 3 - PowerShell filtreli aramayı bir HTML dosyasına aktarın.

Get-Mailbox -ResultSize Unlimited | Where {$_.RecipientTypeDetails -eq "SharedMailbox"} | FT Alias,RecipientTypeDetails | ConvertTo-Html c:\temp\file.html

Aşağıdaki bölümde sonuçların bir örneğini görebiliriz.

Örneğimde, arama sonucunu üç farklı dosya türünde dışa aktardım. Dosya türü formatlarının her birinin kendi "Avantajları" vardır.

Bu, bir Metin dosyasına aktarılan bilgilerin bir örneğidir.

Bu, CSV dosyasına aktarılan bilgilerin bir örneğidir.

CSV dosya formatını kullanmanın avantajı, bilgileri daha rahat bir şekilde görüntülememize, belirli sütunları filtrelememize vb. yardımcı olacak Microsoft Excel gibi uygulamaları kullanabilmemizdir.

Bu, bir HTML dosyasına aktarılan bilgilerin bir örneğidir.

HTML dosya biçimini kullanmanın avantajı, "Raporlar" için daha uygun olmasıdır ve dışa aktarılan bilgileri basit bir web tarayıcısı kullanarak görüntüleyebiliriz.

Aşağıdaki ekran görüntüsünde görünen örnek “standart HTML” PowerShell çıktısı değildir. “Orijinal HTML formatındaki çıktı” daha basittir.

Örneğimde, HTML çıktısına ek bir tasarım formatı ekleyen PowerShell betiğini kullanıyorum.

Eğer bu daha “tasarlanmış HTML çıktısını” kullanmak isterseniz serinin Diğer yazılarına eklediğim PowerShell scriptlerini kullanabilirsiniz.

  • Office 365 nesnelerini görüntülemek için PowerShell'i kullanın | Bölüm 2#3
  • Exchange Online nesnelerini görüntülemek için PowerShell'i kullanın | Bölüm 3#3

Bir sonraki makalede Office 365 nesnelerini görüntülemek için PowerShell kullanma konusuna bakacağız.

İlgili makaleler