PowerShell ile MFA Durumunu Alın (Komut Dosyası Dahil)
Bu kılavuzda PowerShell ile Office 365 kullanıcılarının MFA durumunu nasıl alacağınızı öğreneceksiniz.
Size tek bir kullanıcı ve bir kullanıcı listesi için MFA durumunu nasıl alacağınızı göstereceğim.
Ayrıca Office 365 MFA durum raporunu CSV'ye nasıl aktaracağınızı da göstereceğim.
Başlayalım.
PowerShell Gereksinimleriyle MFA Durumunu Alın
Bu kılavuzdaki örneklerde, Office 365 kullanıcılarının MFA durumunu kontrol etmek için Microsoft Graph modülü kullanılmaktadır. Graph modülünün kurulu olması gerekir.
Get-MGUser cmdlet'i, Office 365 kiracınızdan tek ve tüm kullanıcıları almak için kullanılır.
Get-MGUserAuthenticationMethod cmdlet'i, her kullanıcı için MFA kimlik doğrulama yöntemlerini almak için kullanılır.
Önemli
PowerShell komutları her kullanıcı için kayıtlı kimlik doğrulama yöntemini rapor eder, MFA durumu bu şekilde belirlenir. Ne yazık ki Microsoft, bir hesapta MFA'nın etkin olup olmadığının hesaplanması gerektiğini söyleyen bir komut sağlamamaktadır.
Listelenen tek kimlik doğrulama yöntemi parolaAuthenticationMethod olduğunda bu, kullanıcının MFA'yı etkinleştirmediği anlamına gelir. Aşağıda verdiğim script kimlik doğrulama yöntemlerini kontrol edecek ve MFA Status alanı (Enabled veya Disabled) oluşturacaktır.
Örnek 1. Tek Kullanıcı için Office 365 MFA Durumunu Alma
Tek bir kullanıcının MFA durumunu kontrol etmek çok kolaydır, bunun için şişirilmiş bir komut dosyasına ihtiyacınız yoktur.
1. Adım. Microsoft Graph'a bağlanın
Office 365 Kullanıcılarını alabilmeniz ve MFA durumunu kontrol edebilmeniz için öncelikle Microsoft Graph'a bağlanmanız gerekir.
Aşağıdaki komut, Azure kullanıcı profili özelliklerinin tamamını okumanıza olanak tanır.
Connect-MgGraph -Scopes "User.Read.All"Not: Bazı kullanıcılar, istek yetkilendirmesinin başarısız olması nedeniyle komut dosyasının başarısız olduğunu belirtti. Bu durumda Connect-MgGraph -Scopes “UserAuthenticationMethod.Read.All” kullanmayı deneyin.
Hesabınızla oturum açmanız istenecektir.
Kimliğinizi doğruladığınızda PowerShell'de "Microsoft Graph'a Hoş Geldiniz!" mesajı görüntülenmelidir.
Adım 2. Get-MGUserAuthenticationMethod cmdlet'ini çalıştırın
Tek bir kullanıcının MFA durumunu almak için aşağıdaki komutu çalıştırın.
Get-MGUserAuthenticationMethod -userid abbie.peters@activedirectorypro.com | flBu örnekte abbie.peters@activedirectorypro.com kullanıcısının MFA durumunu kontrol ediyorum.
Listelenen tek yöntem microsoft.graph.passwordAuthenticationMethod kimlik doğrulama yöntemidir; bu, bu kullanıcı için MFA'nın etkinleştirilmediği anlamına gelir.
Şimdi hesabımın kimlik doğrulama yöntemlerini kontrol edeceğim.
Yukarıdaki ekran görüntüsünde hesabımın birden fazla kimlik doğrulama yöntemi döndürdüğünü görebilirsiniz; bu, hesabımda MFA'nın etkin olduğu anlamına gelir.
Tüm kullanıcıları kontrol ederken işler çok daha karmaşık hale geliyor, iyi haber şu ki, kullanabileceğiniz bir komut dosyası oluşturdum.
Örnek 2. Tüm Kullanıcılar için MFA Durumu Office 365 Raporu PowerShell
Aşağıdaki betiği kopyalayabilir veya MFAStatusReport.ps1 PowerShell betiğini indirebilirsiniz.
Varsayılan olarak komut dosyası tüm kullanıcılar için MFA durumunu alır. Bir kullanıcı listesinin durumunu kontrol etmek için bunu nasıl değiştireceğinizi size göstereceğim.
Not: Kiracınızda kaç kullanıcıya sahip olduğunuza bağlı olarak komut dosyasının tamamlanması birkaç dakika sürebilir.
<#
=============================================================================================
Name: Get MFA Status Report
Description: Gets MFA status for all users and authentication methods
Version: 1.0
Website: activedirectorypro.com
Script by: activedirectorypro.com
Instructions: https://activedirectorypro.com/mfa-status-powershell
============================================================================================
#>
#Get all Azure users
$users = get-mguser -All
$results=@();
Write-Host "`nRetreived $($users.Count) users";
#loop through each user account
foreach ($user in $users) {
Write-Host "`n$($user.UserPrincipalName)";
$myObject = [PSCustomObject]@{
user = "-"
MFAstatus = "_"
email = "-"
fido2 = "-"
app = "-"
password = "-"
phone = "-"
softwareoath = "-"
tempaccess = "-"
hellobusiness = "-"
}
$MFAData=Get-MgUserAuthenticationMethod -UserId $user.UserPrincipalName #-ErrorAction SilentlyContinue
$myobject.user = $user.UserPrincipalName;
#check authentication methods for each user
ForEach ($method in $MFAData) {
Switch ($method.AdditionalProperties["@odata.type"]) {
"#microsoft.graph.emailAuthenticationMethod" {
$myObject.email = $true
$myObject.MFAstatus = "Enabled"
}
"#microsoft.graph.fido2AuthenticationMethod" {
$myObject.fido2 = $true
$myObject.MFAstatus = "Enabled"
}
"#microsoft.graph.microsoftAuthenticatorAuthenticationMethod" {
$myObject.app = $true
$myObject.MFAstatus = "Enabled"
}
"#microsoft.graph.passwordAuthenticationMethod" {
$myObject.password = $true
# When only the password is set, then MFA is disabled.
if($myObject.MFAstatus -ne "Enabled")
{
$myObject.MFAstatus = "Disabled"
}
}
"#microsoft.graph.phoneAuthenticationMethod" {
$myObject.phone = $true
$myObject.MFAstatus = "Enabled"
}
"#microsoft.graph.softwareOathAuthenticationMethod" {
$myObject.softwareoath = $true
$myObject.MFAstatus = "Enabled"
}
"#microsoft.graph.temporaryAccessPassAuthenticationMethod" {
$myObject.tempaccess = $true
$myObject.MFAstatus = "Enabled"
}
"#microsoft.graph.windowsHelloForBusinessAuthenticationMethod" {
$myObject.hellobusiness = $true
$myObject.MFAstatus = "Enabled"
}
}
}
##Collecting objects
$results+= $myObject;
}
# Display the custom objects
$resultsKomut dosyasını çalıştırmak için PowerShell'i açın ve önce MS Graph'a bağlanın.
Connect-MgGraph -Scopes "User.Read.All"Daha sonra çalıştırmak için betiğin yolunu ve adını girin.
Komut dosyası kaç hesap bulduğunu gösterecek ve işlediği hesabın çıktısını verecektir.
Komut dosyası tamamlandığında, her kullanıcı için MFA durumunu ve kimlik doğrulama yöntemlerini görüntüler.
MFA durum raporunu CSV'ye aktarmak için Export-CSV parametresini kullanın.
.\MFAStatusReport.ps1 | export-csv -path c:\it\mfastatus-csvKullanıcı Listesi İçin MFA Durumunu Kontrol Edin
Komut dosyasını bir kullanıcı listesinde çalıştırmak istiyorsanız #14 numaralı yorum satırına bu kodu ekleyin.
$users = ForEach ($mguser in $(get-content -path C:\it\users.txt)) {
get-mguser -userid $mguser
}Daha sonra kullanıcıların listesini içeren bir metin dosyası oluşturun. Listeyi istediğiniz yere kaydedebilirsiniz; yalnızca komut dosyasındaki yolu güncellediğinizden emin olun.
Şimdi betiği çalıştırın; yalnızca metin dosyasında listelenen hesapları işleyecektir.
Azure GUI Araç Seti ile MFA Durum Raporu
Azure ve Office 365'i yönetmek için çeşitli rapor ve araçlar içeren grafiksel bir araç üzerinde çalışıyorum. Tek tuşla MFA raporları oluşturabileceksiniz.
Bu aracın beta test kullanıcısı olmak istiyorsanız iletişim sayfasına bakın.
MFA Kimlik Doğrulama Yöntemlerinin Listesi
Aşağıda PowerShell betiğinin kontrol ettiği kimlik doğrulama yöntemlerinin bir listesi bulunmaktadır.
- emailAuthenticationMethod - Bir kullanıcıya kayıtlı e-posta adresini temsil eder
- fido2AuthenticationMethod - Bir kullanıcıya kayıtlı FIDO2 güvenlik anahtarı (USB cihazı)
- microsoftAuthenticatorAuthenticationMethod - Bu, Microsoft kimlik doğrulama uygulamasıdır.
- şifreAuthenticationMethod - Kullanıcının şifresi.
- phoneAuthenticationMethod - Bu, kullanıcının telefonunu SMS veya sesli arama kullanarak kaydettiği anlamına gelir.
- SoftwareOathAuthenticationMethod - Bir kullanıcıya kayıtlı yazılım OATH jetonu.
- geçiciAccessPassAuthenticationMethod - Geçici süre sınırlı geçiş kodu.
- windowsHelloForBusinessAuthenticationMethod - Bir kullanıcıya kayıtlı iş için Windows merhaba.
Komut dosyasında bunların adında #microsoft.graph bulunur.
Kimlik doğrulama yöntemleri hakkında daha fazla bilgi edinmek için kimlik doğrulama yöntemleri kaynak türü Microsoft makalesine bakın.
Umarım bu makaleyi faydalı bulmuşsunuzdur, yorumlarınız veya sorularınız varsa bunları aşağıya gönderin.
İlgili Makaleler:
- Active Directory Kullanıcılarını CSV'ye Aktarma
- PowerShell Grup Üyelerini Al
- Azure AD Kullanıcı PowerShell'ini edinin










