Из полученной ошибки становится совершенно очевидно, что вы должны исправить:
Отсутствует блок операторов после ключевого слова 'else'
Вы пропустили фигурные скобки послеelse
так и должно быть:
else {'Disabled'}
Я проверил ваш командлет по своим учетным записям (у меня включен 2FA), а StrongAuthenticationRequirements
для меня пустой объект (проверено на многих учетных записях - попытайтесь уточнить ниже),Я думаю, что вы должны использовать свойство StrongAuthenticationMethods
вместо этого. Он содержит информацию о каналах, которые были настроены для 2FA.
Наконец, ваш код будет выглядеть следующим образом:
foreach ($c in $rm) {
Get-MsolUser -UserPrincipalName $c.EmailAddress | Select DisplayName, UserPrincipalName,
@{N="MFA Status"; E={ if($_.StrongAuthenticationMethods.Count -ne 0) { "$($_.StrongAuthenticationMethods.Count) methods found" } else {'Disabled'} }}
}
Но вы можете заметить, что некоторые записи содержат ошибки с такой информацией:
Get-MsolUser: Невозможно связать аргумент с параметром 'UserPrincipalName', поскольку он имеет значение null.
Чтобы избавиться от этого, важно отфильтровать ServicePrincipal
членов из Get-MsolRoleMember
(например, у меня есть RMS и информационная служба PowerBI, возможно, у вас их нет или разные):
foreach ($c in $rm | Where-Object {$_.rolemembertype -eq 'user'}) {
Get-MsolUser -UserPrincipalName $c.EmailAddress | Select DisplayName, UserPrincipalName,
@{N="MFA Status"; E={ if($_.StrongAuthenticationMethods.Count -ne 0) { "$($_.StrongAuthenticationMethods.Count) methods found" } else {'Disabled'} }}
}
Разъяснение о StrongAuthenticationMethods
и StrongAuthenticationRequirements
Отто, что я прочитал здесь , похоже, StrongAuthenticationRequirements
применимо для MFA для каждого пользователя. Если ваш арендатор использует MFA на основе условного доступа, это свойство может быть пустым (проверено на моем арендаторе). Поэтому, я думаю, StrongAuthenticationMethods
более надежен.
ПРИМЕЧАНИЕ : Я также протестировал часть длинного кода, который вы разместили, и он работает правильно для меня. И у вас есть опечатка в getMsolRole
- должно быть Get-MsolRole