ค้นหาเว็บไซต์

ส่งออกสถานะ MFA ของผู้ใช้ Microsoft 365 ทั้งหมดด้วย PowerShell


ในโพสต์นี้ ฉันจะแสดงให้คุณเห็นว่าคุณสามารถใช้ PowerShell เพื่อส่งออกรายงานเกี่ยวกับสถานะ MFA ของผู้ใช้ทั้งหมดใน Microsoft 365 ได้อย่างไร ซึ่งจะทำให้คุณเห็นภาพรวมที่ชัดเจน ของสถานะปัจจุบันของการตั้งค่า MFA ของผู้ใช้ของคุณ

นอกจากนี้ การดูสถานะ MFA ของผู้ใช้ของคุณด้วยวิธีที่ชัดเจนและรัดกุมยังเป็นประโยชน์อย่างยิ่ง หากคุณวางแผนที่จะกำหนดบทบาทการเข้าถึงแบบมีเงื่อนไขในสภาพแวดล้อมของคุณเพื่อบังคับใช้ MFA แต่ไม่มีการสมัครใช้งาน Azure เพื่อเปิดใช้งานการวิเคราะห์บันทึก

ตัวเลือกอื่นๆ เพียงอย่างเดียวในการดูสถานะ MFA ของผู้ใช้ของคุณคือการใช้หน้าเว็บผู้ใช้การตรวจสอบสิทธิ์แบบหลายปัจจัยในศูนย์การจัดการ Microsoft 365 อย่างไรก็ตาม ฟังก์ชันนี้ขาดฟังก์ชันที่มีประโยชน์จริงๆ เช่น การส่งออก กรองหรือระบุวิธีการรับรองความถูกต้องที่ใช้อยู่

นอกจากนี้ หากคุณต้องการเรียนรู้วิธีบังคับใช้วิธีการรับรองความถูกต้องที่ปลอดภัยยิ่งขึ้น เช่น การป้องกันการใช้การตรวจสอบสิทธิ์ SMS โปรดดูบทช่วยสอนของฉันเกี่ยวกับวิธีการเปิดใช้งานคำสั่ง need การตั้งค่าความแข็งแกร่งของการรับรองความถูกต้องในการเข้าถึงแบบมีเงื่อนไข

ข้อกำหนดเบื้องต้น

เพื่อให้สคริปต์นี้ทำงานได้ คุณต้องมีสิทธิ์การเข้าถึงระดับผู้ดูแลระบบส่วนกลางสำหรับผู้เช่า Microsoft 365 ของคุณ ทั้งนี้เพื่อให้แน่ใจว่าคุณสามารถอ่านข้อมูลที่เกี่ยวข้องทั้งหมดที่จะส่งออกได้ หากคุณไม่แน่ใจว่าคุณมีสิทธิ์เข้าถึงระดับนี้หรือไม่ โปรดติดต่อทีมไอทีของคุณหรือขอให้พวกเขาเรียกใช้สคริปต์นี้ในนามของคุณ

คุณควรจะติดตั้งโมดูล MSOnline PowerShell ด้วย หากคุณไม่แน่ใจว่าต้องทำอย่างไร โปรดดูโพสต์ของฉัน: วิธีแก้ไขคำว่า 'Connect-MsolService' ไม่ได้รับการยอมรับ

ส่งออกสถานะ MFA ของผู้ใช้ด้วย PowerShell

สคริปต์สำหรับส่งออกข้อมูล MFA ของผู้ใช้แต่ละรายนั้นค่อนข้างง่าย โดยจะเริ่มต้นด้วยการเชื่อมต่อกับบริการ MSOnline ซึ่งคุณจะเห็นข้อความโต้ตอบเพื่อให้คุณเข้าสู่ระบบทันที เมื่อเข้าสู่ระบบแล้ว ระบบจะรวบรวมรายชื่อบัญชีผู้ใช้ทั้งหมดในผู้เช่าของคุณ จากนั้นวนซ้ำผู้ใช้แต่ละรายเพื่อจัดเก็บข้อมูล MFA เมื่อเสร็จแล้ว ข้อมูลจะถูกส่งออกเป็นไฟล์ CSV บนระบบของคุณที่ C:\temp

คุณสามารถคัดลอกและวางสคริปต์ด้านล่างลงใน PowerShell หรือคุณสามารถบันทึกเป็นไฟล์ .ps1 และเรียกใช้ในลักษณะนั้นได้

#Connect to Microsoft Online
Connect-MsolService

#Get all user accounts
Write-Host "Finding accounts..." -ForegroundColor white -BackgroundColor Black
$Users = Get-MsolUser -All | Where-Object { $_.UserType -ne "Guest" }

#create a new object
$Report = [System.Collections.Generic.List[Object]]::new()

#pause and display information
Start-Sleep 1.5
Write-Host $users.count "Accounts found" -ForegroundColor white -BackgroundColor Black

#Loop through each user, gather information on mfa status and methods and add to report
ForEach ($user in $users) {
    $mfadefaultmethod = ($User.StrongAuthenticationMethods | Where-Object { $_.IsDefault -eq "True"}).methodtype
    $userupn = $user.UserPrincipalName
    $displayname = $user.displayname
    If (($user.StrongAuthenticationRequirements.state) -eq "Enforced") {
        $state = $User.StrongAuthenticationRequirements.State
    }
    Else {
        $state = 'Disabled'
    }
    If ($mfadefaultmethod) {
        Switch ($mfadefaultmethod) {
        "OneWaySMS" { $Method = "SMS" }
        "TwoWayVoiceMobile" { $Method = "Phone call" }
        "PhoneAppOTP" { $Method = "Hardware token or authenticator app" }
        "PhoneAppNotification" { $Method = "Authenticator app" }
        }
    }
    Else {
        $mfadefaultmethod = "Not set"
   }
     $ReportLine = [PSCustomObject] @{
        UserPrincipalName = $User.UserPrincipalName
        DisplayName       = $User.DisplayName
        MFAState          = $State
        MFADefaultMethod  = $MFADefaultMethod
    }          
    $Report.Add($ReportLine)
   }
   
#Export report to CSV file
$Report | Export-CSV -Encoding UTF8 -NoTypeInformation "c:\temp\m365mfareport.csv"
Write-Host "Data exported to C:\temp folder" -ForegroundColor white -BackgroundColor Black

บทความที่เกี่ยวข้อง