Если / иначе в powershell для определения StrongAuthenticationStatus - powershell - PullRequest
0 голосов
/ 10 июля 2019

Таким образом, я пытаюсь найти надежный метод, чтобы определить, настроен ли у пользователя многофакторная аутентификация o365 на его учетной записи до запуска сценария, чтобы он не был повторно включен.

с помощью:

$MFAUsers = Get-Msoluser -userprincipalname test.webjea@xxx.com  | select "StrongAuthenticationRequirements"

выходы, если они включены

StrongAuthenticationRequirements
--------------------------------
{Microsoft.Online.Administration.StrongAuthenticationRequirement}

и следующие, если они отключены

StrongAuthenticationRequirements
--------------------------------
{}

В идеале, если пользователь отключен, скрипт запускается для его учетной записи, включая его. Если они включены, скрипт пропустит их. Для тестирования у меня есть составленный

if ($MFAUsers -eq "{Microsoft.Online.Administration.StrongAuthenticationRequirement}") {
"NO MFA"
} 
Elseif ($MFAUsers -eq "{Microsoft.Online.Administration.StrongAuthenticationRequirement}"){
"MFA"
}

При запуске этого теста для включенной тестовой учетной записи я все равно получаю ответ "нет MFA"

У кого-нибудь есть идеи? Я уверен, что это что-то глупое, но я действительно не могу указать на это пальцем? Он видит заголовок «StrongAuthenticationRequirments»?

1 Ответ

1 голос
/ 10 июля 2019

Тест, который вы проводите, такой же для if, что и для elseif. Когда {Microsoft.Online.Administration.StrongAuthenticationRequirement} возвращается, это означает, что MFA включен для этого пользователя. Когда функция возвращает {}, пользователь не имеет установленного StrongAuthenticationRequirement.

Я не могу проверить это сам, но выполнение приведенного ниже кода должно показать вам, у каких пользователей включен «MFA», а у каких нет.

# test for all users would be Get-MsolUser -All
Get-MsolUser -UserPrincipalName 'test.webjea@xxx.com' | 
    Select-Object DisplayName, UserPrincipalName,
                  @{ Name = "MFA"
                     Expression = { 
                        if($_.StrongAuthenticationRequirements.Count -ne 0) { 
                            $_.StrongAuthenticationRequirements[0].State
                        } 
                        else { 'Disabled' }
                     } }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...