Trong hướng dẫn này, bạn sẽ học cách lấy trạng thái xác thực đa yếu tố (MFA) của người dùng Office 365 bằng PowerShell. Tri Thức Software sẽ hướng dẫn bạn cách thiết lập trạng thái xác thực đa yếu tố (MFA) cho một người dùng và một danh sách người dùng. Ngoài ra, tôi sẽ hướng dẫn bạn cách xuất báo cáo trạng thái xác thực đa yếu tố (MFA) Office 365 sang định dạng CSV.
Lấy trạng thái xác thực đa yếu tố (MFA) bằng PowerShell – Yêu cầu
Các ví dụ trong hướng dẫn này sử dụng mô-đun Microsoft Graph để kiểm tra trạng thái xác thực đa yếu tố (MFA) cho người dùng Office 365. Bạn cần phải cài đặt mô-đun Graph.
Lệnh Get-MGUser được sử dụng để lấy thông tin của một người dùng hoặc tất cả người dùng từ tài khoản Office 365 của bạn.
Cmdlet Get-MGUserAuthenticationMethod được sử dụng để lấy các phương thức xác thực MFA cho mỗi người dùng.
Quan trọng
Các lệnh PowerShell báo cáo phương thức xác thực được đăng ký cho mỗi người dùng, đây là cách xác định trạng thái MFA. Thật không may, Microsoft không cung cấp lệnh nào đơn giản cho biết liệu một tài khoản có bật MFA hay không, mà phải tính toán điều này.
Khi `passwordAuthenticationMethod` là phương thức xác thực duy nhất được liệt kê, điều này có nghĩa là người dùng chưa bật xác thực đa yếu tố (MFA). Đoạn mã tôi cung cấp bên dưới sẽ kiểm tra các phương thức xác thực và tạo trường Trạng thái MFA (Đã bật hoặc Đã tắt).
Lấy trạng thái xác thực đa yếu tố (MFA) của Office 365 cho một người dùng duy nhất
Kiểm tra trạng thái xác thực đa yếu tố (MFA) của một người dùng rất dễ dàng, bạn không cần đến một đoạn mã phức tạp nào cả.
Bước 1. Kết nối với Microsoft Graph
Trước khi có thể lấy thông tin Người dùng Office 365 và kiểm tra trạng thái xác thực đa yếu tố (MFA), trước tiên bạn cần kết nối với Microsoft Graph.
Lệnh dưới đây cho phép bạn đọc toàn bộ các thuộc tính hồ sơ người dùng Azure.
Connect-MgGraph -Scopes "User.Read.All"
Lưu ý: Một số người dùng đã đề cập rằng tập lệnh bị lỗi với thông báo “yêu cầu xác thực không thành công”. Trong trường hợp này, hãy thử sử dụng lệnh Connect-MgGraph -Scopes “UserAuthenticationMethod.Read.All”
Bạn sẽ được yêu cầu đăng nhập bằng tài khoản của mình.

Sau khi xác thực thành công, PowerShell sẽ hiển thị “Chào mừng đến với Microsoft Graph!”

Bước 2. Chạy lệnh Get-MGUserAuthenticationMethod
Chạy lệnh dưới đây để lấy trạng thái xác thực đa yếu tố (MFA) cho một người dùng cụ thể.
Get-MGUserAuthenticationMethod -userid [email protected] | fl
Trong ví dụ này, tôi đang kiểm tra trạng thái xác thực đa yếu tố (MFA) cho người dùng [email protected].

Phương thức xác thực microsoft.graph.passwordAuthenticationMethod là phương thức duy nhất được liệt kê, điều này có nghĩa là xác thực đa yếu tố (MFA) chưa được bật cho người dùng này.
Giờ tôi sẽ kiểm tra các phương thức xác thực cho tài khoản của mình.

Trong ảnh chụp màn hình ở trên, bạn có thể thấy tài khoản của tôi trả về nhiều phương thức xác thực, điều này có nghĩa là tài khoản của tôi đã bật xác thực đa yếu tố (MFA).
Báo cáo trạng thái xác thực đa yếu tố (MFA) Office 365 cho tất cả người dùng PowerShell
Bạn có thể sao chép đoạn mã bên dưới hoặc tải xuống tập lệnh PowerShell MFAStatusReport.ps1.
Theo mặc định, tập lệnh sẽ lấy trạng thái xác thực đa yếu tố (MFA) cho tất cả người dùng.
Lưu ý: Tùy thuộc vào số lượng người dùng trong tài khoản của bạn, quá trình thực thi tập lệnh có thể mất vài phút.
<#
=============================================================================================
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
$results
Để chạy tập lệnh, hãy mở PowerShell và trước tiên kết nối với MS Graph.
Connect-MgGraph -Scopes "User.Read.All"
Sau đó, nhập đường dẫn và tên của tập lệnh cần thực thi.

Khi kịch bản hoàn tất, nó sẽ hiển thị trạng thái xác thực đa yếu tố (MFA) và phương thức xác thực cho mỗi người dùng.

Để xuất báo cáo trạng thái MFA sang định dạng CSV, hãy sử dụng tham số export-CSV.
.\MFAStatusReport.ps1 | export-csv -path c:\it\mfastatus-csv

Kiểm tra trạng thái xác thực đa yếu tố (MFA) cho danh sách người dùng
Chạy tập lệnh trên một danh sách người dùng.
$users = ForEach ($mguser in $(get-content -path C:\it\users.txt)) {
get-mguser -userid $mguser
}

Tiếp theo, tạo một tệp văn bản chứa danh sách người dùng.

Danh sách các phương thức xác thực MFA
Dưới đây là danh sách các phương thức xác thực mà tập lệnh PowerShell kiểm tra.
- emailAuthenticationMethod – Đại diện cho địa chỉ email đã đăng ký của người dùng.
- fido2AuthenticationMethod – Khóa bảo mật FIDO2 được đăng ký cho người dùng (thiết bị USB)
- microsoftAuthenticatorAuthenticationMethod – Đây là ứng dụng xác thực của Microsoft.
- passwordAuthenticationMethod – Mật khẩu của người dùng.
- phoneAuthenticationMethod – đăng ký số điện thoại của họ bằng tin nhắn SMS.
- softwareOathAuthenticationMethod – Mã thông báo OATH phần mềm được đăng ký cho người dùng.
- temporaryAccessPassAuthenticationMethod – Mã truy cập tạm thời có thời hạn.
- windowsHelloForBusinessAuthenticationMethod – Phương thức xác thực Windows Hello dành cho doanh nghiệp đã được đăng ký cho người dùng.
Trong đoạn mã, các mục này sẽ có chứa #microsoft.graph trong tên.

Tôi hy vọng bài viết này hữu ích với bạn. Nếu bạn có ý kiến hoặc câu hỏi, vui lòng để lại bình luận bên dưới.
Tổng kết
Vậy là tôi vừa hướng dẫn xong cho bạn Cách Check Trạng Thái MFA Người Dùng Bằng PowerShell Nhanh Chóng. Hy vọng bài viết này sẽ hữu ích cho bạn! Nếu gặp bất kỳ khó khăn nào trong quá trình thực hiện, bạn có thể liên hệ banquyenphanmem.com hoặc gọi số 028.22443013 để được trợ giúp.












