Отчёт о регистрации методов MFA отвечает на вопрос, какие методы подготовлены у пользователей. Он не доказывает, что каждая сессия уже защищена MFA или что Conditional Access применился к конкретному входу. Для проверки фактического входа нужен анализ журналов аутентификации.
Проверить права и лицензии
Microsoft Graph предоставляет userRegistrationDetails в API отчётов. Для доступа требуется AuditLog.Read.All; для делегированного запроса нужна также поддерживаемая роль, например Reports Reader. Наличие OAuth-разрешения не заменяет роль пользователя. Проверьте требования к лицензиям Authentication Methods Activity в вашем tenant.
Не выдавайте Global Administrator только для выгрузки. Выбирайте поддерживаемую роль чтения и согласуйте административное согласие на разрешение.
Подключиться и получить строки
Install-Module Microsoft.Graph.Authentication -Scope CurrentUser
Install-Module Microsoft.Graph.Reports -Scope CurrentUser
Connect-MgGraph -Scopes 'AuditLog.Read.All' -NoWelcome
$rows = @(Get-MgReportAuthenticationMethodUserRegistrationDetail -All)
$rows | Select-Object -First 5 UserPrincipalName, IsMfaRegistered, IsMfaCapable-All нужен для обхода страниц. Не считайте результат первой страницы итогом по tenant. Если доступ запрещён, проверьте согласие, роль, лицензии и учётную запись подключения.
Различать зарегистрирован и способен использовать
| Поле | Смысл |
|---|---|
| isMfaRegistered | Сильный метод зарегистрирован, но политика может его не разрешать |
| isMfaCapable | Есть зарегистрированный сильный метод, разрешённый политикой |
| methodsRegistered | Список типов зарегистрированных методов |
| isAdmin | Признак административной роли для анализа привилегированных учётных записей |
| lastUpdatedDateTime | Время обновления строки отчёта |
Для отрицательного результата не делайте вывод «пользователь нарушил политику». Сначала проверьте возраст данных, применимость метода и состояние учётной записи.
Экспортировать нормальный CSV
$report = $rows | Select-Object UserPrincipalName, UserDisplayName,
IsAdmin, IsMfaRegistered, IsMfaCapable,
@{Name='Methods'; Expression={ $_.MethodsRegistered -join ';' }},
LastUpdatedDateTime
$report | Export-Csv -Path '.\mfa-registration.csv' -NoTypeInformation `
-Encoding utf8BOM
$report | Where-Object { $_.IsAdmin -and -not $_.IsMfaCapable }Массив методов преобразован в строку, иначе CSV может содержать имя типа коллекции. utf8BOM в примере рассчитан на PowerShell 7 и удобен для открытия кириллицы в Excel. Файл содержит персональные данные, поэтому ограничьте доступ и срок хранения.
Проверить полноту
API не работает для отключённых пользователей. Не используйте размер этого результата как численность всей директории. При необходимости сопоставьте его с отдельной выгрузкой пользователей и явно обозначьте отсутствующие строки.
Проверяйте актуальность по lastUpdatedDateTime и соответствующим отчётам портала. Для оперативного расследования входа используйте sign-in logs и details методов конкретной аутентификации. Задание по расписанию должно различать пустой результат, отказ в доступе и успешный отчёт без проблемных строк.
Документация: API и права доступа.
Документация: Описание полей.
Документация: Отчёт, роли и лицензии.
Иллюстрации к инструкции

Материал подготовлен самостоятельно на русском языке. Исходная тема и иллюстрации: LazyAdmin. Технические сведения сверены с документацией, указанной выше, 11 октября 2026 года. Интерфейсы и версии модулей могут отличаться от показанных примеров.