Microsoft Graph PowerShell ile Get-MgUser Nasıl Kullanılır
Microsoft Graph PowerShell'deki Get-MgUser cmdlet'i, kuruluşunuzdaki bir kullanıcı, kullanıcı grubu veya tüm kullanıcılar hakkındaki bilgileri komut satırından bulmanızı sağlar. Ayrıca, kullanıcılarınız hakkında normalde Azure AD Admin Center veya Microsoft 365 Admin Center gibi web tabanlı yönetim portallarında bulabileceğinizden daha fazla bilgiyi açığa çıkaracaktır.
Bu eğitimde, kullanıcılarınız hakkında yararlı bilgileri bulmak ve dışa aktarmak için Microsoft Graph PowerShell'deki Get-MgUser cmdlet'ini nasıl kullanacağınız konusunda size yol göstereceğim. Ayrıca ihtiyacınız olan spesifik bilgiyi bulmak için arama sonuçlarınızı nasıl filtreleyebileceğinizi ve değiştirebileceğinizi de ele alacağım.
İçerik
- Get-MgUser cmdlet'ini neden kullanmalısınız?
- Önkoşullar
- Get-MgUser'ı çalıştırmak için gerekli izinleri bulma
- Tek bir kullanıcı hakkında bilgi bulma
- Belirli özellikleri seçme
- Microsoft Graph başvuru belgeleriyle iç içe geçmiş özellikleri bulun
- -ExpandProperty veya -Expand ile gizli bilgileri bulun
- Get-MgUser arama sonuçlarını filtrele
- Arama parametresiyle kullanıcıları bulun
- Arama ve filtre seçeneklerini birleştirme
Get-MgUser cmdlet'ini neden kullanmalısınız?
Get-MgUser, bir komut satırı arayüzü aracılığıyla kullanıcılarınız hakkında bilgi bulmak için kullanılması tercih edilen komuttur. Komut, MSOnline ve AzureAD gibi PowerShell modüllerinin halefi olan Microsoft Graph PowerShell SDK'sında bulunur.
Get-MgUser ile kullanabileceğiniz birçok farklı parametre vardır, örneğin:
-ExpandProperty
-Property
-Filtre
-Arama
-Atla
- Sırala
-Top
-ConsistencyLevel
-PageSize
-Tümü
-CountVariable
Önkoşullar
Get-MgUser komutunu kullanmak için aşağıdakilerden emin olmanız gerekir:
- PowerShell 5,1 veya üstünü çalıştırıyorsunuz
- .NET Framework 4.7.2 veya üzeri yüklü
- Microsoft Graph PowerShell SDK'sı yüklü
Get-MgUser'ı çalıştırmak için gerekli izinleri bulma
Microsoft Graph'a bağlanmadan önce, -scope parametresini, komutu çalıştırmak için tanımlanmış doğru izinlerle kullandığınızdan emin olmalısınız.
Kullanıcınızla ilgili bilgileri bulmak için ihtiyaç duyduğunuz minimum izin düzeyini bulmak amacıyla Get-MgUser cmdlet'ine yönelik izinleri bulmak için Find-MgGraphCommand cmdlet'ini kullanın.
Find-MgGraphCommand -command Get-MgUser |`
Select -First 1 -ExpandProperty PermissionsBu komutu çalıştırmak için kuruluşunuza bağlı olmanıza gerek yoktur ancak Microsoft Graph PowerShell'in yüklü olması gerekir. İşte beklenen çıktı, açıklama göstermese de izin adına göre doğru varsayımlar yapılabilir.
Yukarıdaki çıktıya dayanarak komutumuzu çalıştırmak için aşağıdaki komutu kullanarak Microsoft Graph'a gereken en az izinle bağlanabiliriz.
Connect-MgGraph -Scopes "User.Read.All"Tek bir kullanıcı hakkında bilgi bulma
Tek bir kullanıcının bilgilerini bulmak için tüm kullanıcıların görünen adlarının, kullanıcı adlarının ve kimliklerinin bir listesini göstermek üzere aşağıdaki komutu çalıştırabilirsiniz. Buradan, o kullanıcıyı doğrudan hedeflemenize olanak sağlamak için hedef kullanıcınızın kimliğini kopyalayabilirsiniz.
Get-MgUser | select DisplayName, UserPrincipalName, IdKullanıcı kimliğini kopyaladıktan sonra, bir kullanıcı hesabındaki tüm bilgileri görüntülemek için onu aşağıdaki komuta yerleştirin.
Get-MgUser -UserId 5965d511-e639-4a28-bfbb-b2cb08e83907 | flKullanıcınızın kullanıcı adını zaten biliyorsanız, aynı sonucu elde etmek için Kimliği kullanıcı adıyla değiştirebilirsiniz.
Get-MgUser -UserId [email | flBelirli özellikleri seçme
Belirli bir kullanıcıyı hedeflediğinizde ve 'biçim listesi' parametresini eklediğinizde, çoğu boş veya alakasız olan sayfalarca bilgi alırsınız. select parametresini kullanarak görüntülenen nitelikleri seçebiliriz.
Örneğin sadece görünen adı, kullanıcı adını ve kullanıcı kimliğini görüntülemek için aşağıdaki komutu kullanabiliriz.
Get-MgUser -UserId [email | `
select DisplayName, UserprincipalName, IdHangi nitelikleri raporlamak istediğinizi belirlemek ve komutlarınızı daha sonraki bir tarih için kaydetmek için Format-Line parametresiyle birlikte bir PIPE kullanın.
Görüntülemek istediğiniz mülklerden bazıları iç içe olduğundan hemen görünmeyebilir. Örneğin, bir kullanıcının posta kutusunda otomatik yanıtların etkin olup olmadığını görüntülemek istiyorsanız aşağıdakileri çalıştırabilirsiniz.
Get-MgUser -UserId [email -Property MailboxSettings | `
Select @{Name = 'AutomaticReply'; Expression = {$_.MailboxSettings.AutomaticRepliesSetting.status}}Bazen bu ayarları bulmak kolay olmayabilir, ancak belirli bilgileri çıkarmanız gerektiğinde Microsoft Graph belgeleri başlamak için en iyi yerdir.
Microsoft Graph başvuru belgeleriyle iç içe geçmiş özellikleri bulun
Get-MgUser cmdlet'i çağrılırken özelliklerin çoğu iç içedir. Bu aynı zamanda Microsoft Graph'taki diğer cmdlet'ler için de geçerlidir ve bu özellikleri bulmak için Microsoft Learn'deki Graph API referans belgelerine bakılacak en iyi yerdir.
Bir posta kutusu için otomatik yanıt ayarlarını bulduğum yukarıdaki örnekte, bunu belgelerde şu şekilde arayabiliriz.
1. https://learn.microsoft.com/en-us/graph/api/resources/user?view=graph-rest-1.0#properties adresine giderek başlayın; bu sayfada tüm özellikler, değer türü ve bir Her özelliğin açıklaması.
2. Başlangıç özelliğini bulun ve tıklanabilirse tür alanını seçin. Burada mailboxSettings'i seçtim.
3. mailboxSettings özelliğinin tüm özelliklerini görüntüleyen benzer bir sayfa göreceksiniz. Burada automaticRepliesSetting'i seçtim.
4. Bir kullanıcının posta kutusundaki otomatik yanıt ayarlarının durumunu görüntülemek istiyorsak durum özelliğine ihtiyacımız olduğunu görebiliriz. Posta Kutusu Ayarları > Otomatik Yanıt Ayarları'nda yuvalanmıştır.
Yani ayar değerimizin MailboxSettings.AutomaticRepliesSetting.status içerisinde bulunduğunu biliyoruz ancak bunun bir ifade olarak komutumuza dahil edilmesi gerekiyor. Bunu yapmazsanız aşağıdaki gibi bir hata alırsınız:
Seçin : İfade için zorunlu bir giriş eksik.
Bu işlemi gerçekleştirmek için, -property parametresini komutumuzda tanımladıktan sonra PIPE yapabiliriz, ardından değerimizi çıkarmak için aşağıdaki gibi select komutunu kullanabiliriz:
Seç @{Name='Otomatik Yanıt'; İfade={$_.MailboxSettings.AutomaticRepliesSetting.status}}
Otomatik Yanıt
————-
devre dışı
-ExpandProperty veya -Expand ile gizli bilgileri bulun
Bir kullanıcıya ait tüm kullanıcı niteliklerini görüntülemek için format-list komutunu kullandıysanız çoğunun boş olduğunu fark etmiş olabilirsiniz. Bunun neden olduğundan emin değilim, ancak bazıları kesinlikle bilgi içerebilir. Hemen görünmeyen bilgileri görüntülemek için Expand veya ExpandProperty parametrelerini kullanabilirsiniz.
Alışılmadık bir başka tuhaflık da, tüm komutların Get-MgUser'dan sonra kullanıcı kullanıcı adını kabul etmemesidir, bu nedenle eğitimin başında, UserPricincipalName veya Id'yi komutunuza ayrıştırabileceğinizi vurguladım. Bu size göstereceğim bir sonraki komut için de geçerlidir.
Örneğin, bir kullanıcının son oturum açma bilgilerini görüntülemek için aşağıdakileri yapabilirsiniz.
get-mguser -userid (get-mguser -UserId "[email ").id `
-property signinactivity | Select-Object -expandproperty signinactivityYukarıdaki komutta gördüğünüz gibi kullanıcının Id’ini bilmeden Id özelliğini seçip komutumuz içerisinde kullanıcıyı iki kere çağırdık. Komutunuzda id belirtmezseniz aşağıdaki gibi bir hata alırsınız:
get-mguser : {“@odata.context”:”http://reportingservice.activedirectory.windowsazure.com/$metadata#Edm.String”,”value”:” Anahtarla Al yalnızca Kullanıcı Kimliğini destekler ve anahtarın geçerli bir Guid olması gerekir"
Bu nedenle yukarıdaki aynı komutu kullanıcı kimliğiyle kullanmak için aşağıdakileri çalıştırabilirsiniz.
get-mguser -userid 841e1f59-a0e2-4062-896a-8c84c36f1811 `
-property signinactivity | Select-Object -expandproperty signinactivityTüm özelliklerin aynı formatta sunulmadığını göreceksiniz. Bu, bilginin her zaman aynı şekilde elde edilemeyeceği anlamına gelir. Örneğin belirli bir kullanıcıya ait yöneticinin adını görüntülemek istiyorsak aşağıdaki komutu çalıştırabiliriz.
Get-MgUser -UserId [email -ExpandProperty manager | `
Select @{Name = 'Manager'; Expression = {$_.Manager.AdditionalProperties.displayName}}
Get-MgUser arama sonuçlarını filtrele
Kullanıcılarınızın arama sonuçlarını filtrelemek için -Filter parametresini kullanabilirsiniz. Filtre parametresini kullanırken kullanabileceğiniz yalnızca birkaç mantıksal operatör vardır; bunlar:
- eq Özellik şuna eşittir:
- le Özellik küçüktür veya eşittir (alfabetik olarak)
- gt Özellik büyüktür veya eşittir (alfabetik olarak)
- ve Özellik 1 eşittir ve özellik 2 eşittir
- veya Özellik 1 eşittir veya özellik 2 eşittir
- startswith Özellik şununla başlar:
- şununla biter Özellik şununla biter:
Aşağıda size komutlarınızda mantıksal operatörlerin her birinin nasıl kullanılacağına dair bir örnek göstereceğim.
Başlangıç olarak, belirli bir değerle eşleşen özelliklere sahip kullanıcıları bulmak için eq operatörünü kullanabiliriz; burada, görünen adı 'John Smith'e eşit olan kullanıcılar için filtre uygulanacaktır.
get-mguser -filter "DisplayName eq 'John Smith'"Yukarıdakine benzer bir biçimde, görünen adı alfabedeki 'G' harfinden küçük veya büyük bir harfle başlayan kullanıcıları bulmak için le veya ge operatörünü kullanabiliriz .
#Filter users whos name begins with a letter before G in the alphabet
get-mguser -filter "DisplayName le 'g'"
#Filter users whos name begins with a letter after G in the alphabet
get-mguser -filter "DisplayName ge 'g'"Kiracınızda görünen adı D harfiyle başlayan tüm kullanıcıları bulmak için startswith operatörünü kullanabilirsiniz.
get-mguser -filter "startswith(Displayname, 'D')"Yukarıdakine benzer şekilde, birincil posta adresi belirli bir alan adıyla biten kullanıcıları bulmak için kullanıcıyı sonlandırma operatörüyle yapabiliriz. Bu komut için -CountVariable ve -ConsistencyLevel parametrelerini belirtmemiz önemlidir.
Get-MgUser -CountVariable CountVar -Filter "endsWith(mail,'it-career.online')" `
-Sort "displayName" -ConsistencyLevel eventualSonuçlarımıza ince ayar yapmak için yukarıdaki komutlar artık ve operatörüyle eşleştirilebilir. Örneğin, it-career.online ana alan adına sahip olan ve D ile başlayan görünen adı olan kullanıcıları bulmak için.
Get-MgUser -CountVariable CountVar -Filter `
"endsWith(mail,'it-career.online') and startswith(Displayname, 'D')" `
-Sort "displayName" -ConsistencyLevel eventualYukarıdakine benzer şekilde veya operatörü, sonuçlarımızı genişletmek için aynı şekilde kullanılabilir. Burada, birincil posta adresleri 'it-career.online' veya 'it-career.info' ile biten kullanıcıları arıyoruz.
Get-MgUser -CountVariable CountVar -Filter `
"endsWith(mail,'it-career.online') or endsWith(mail,'it-career.info')" `
-Sort "displayName" -ConsistencyLevel eventualArama parametresiyle kullanıcıları bulun
Filtre seçeneğine benzer şekilde, kullanıcı arama sonuçlarımızda ince ayar yapmak için -search parametresini de kullanabiliriz. Yukarıda -ConsistencyLevel seçeneğinin kullanılmasından ve sonuç olarak ayarlanmasından bahsetmiştim, bunu aşağıdaki komutlarda yapmamız gerekecek.
Aşağıda I harfiyle başlayan görünen adı olan kullanıcıları arıyoruz.
Get-MgUser -ConsistencyLevel eventual -Search '"DisplayName:I"'Örneğin, kelime öbeklerine göre arama yapılması dışında, arama parametresinin çalışıp çalışmadığı tam olarak belli değildir. Görünen ad 'John Smith' ise arama terimlerini kullanabilirim:
- '”GörünenAd:J”'
- ''Görünen Ad: John''
- '”Görünen Ad:Smith”'
- ''GörünenAd:S''
Ancak kelimenin ortasına veya sonuna ait olabilecek değerleri bulamayacaktır. Örneğin, aşağıdakileri kullanırsam John Smith arama sonuçlarımda görünmeyecektir:
- ‘”GörünenAd:h”'
- ‘”GörünenAd:th”'
- '”GörünenAd:hn”'
Arama ve filtre seçeneklerini birleştirme
Get-MgUser cmdlet'ini kullanırken, arama ve filtre parametreleri birbirini dışlamaz, ancak özelliklerin/belgelerin eksikliği tartışmalı olsa da, ikisini birleştirmek pek çok fayda sağlamaz, ancak bunu yapabilirsiniz.
Örneğin, it-career.online etki alanına sahip tüm kullanıcıları filtrelemek ve belirli bir departmandaki kullanıcılar için sonuçları aramak istiyorsanız aşağıdakileri çalıştırabilirsiniz.
Get-MgUser -Filter "endsWith(mail,'it-career.online')" `
-Search 'Department:Marketing' -ConsistencyLevel eventual


