我正在尝试从Azure中拉出用户列表,以查看他们是否已启用(或出于报告原因而禁用)MFA(我出于以下原因):
$cred = Get-Credential
Connect-MsolService -Credential $cred
$users = Get-msoluser -All
$users | select DisplayName,@{N='Email';E={$_.UserPrincipalName}},@{N='StrongAuthenticationRequirements';E={($_.StrongAuthenticationRequirements.State)}} | Export-Csv -NoTypeInformation C:\csv.csv
这确实会根据需要进行连接并提取所有用户名和电子邮件,但是$_.StrongAuthenticationRequirements.State
返回null。还有其他方法还是我忽略了某些东西?
答案 0 :(得分:2)
您可以在cmd以下使用
Get-MsolUser -all | select DisplayName,UserPrincipalName,@{N="MFA Status"; E={
if( $_.StrongAuthenticationRequirements.State -ne $null) {$_.StrongAuthenticationRequirements.State} else { "Disabled"}}}
,或者您可以使用预构建脚本来Export Azure users' MFA status。
使用此脚本,您可以基于MFA状态(即仅具有启用状态/强制状态/禁用状态的用户)及其MFA身份验证方法导出结果。
答案 1 :(得分:1)
https://docs.microsoft.com/en-us/azure/active-directory/authentication/howto-mfa-reporting
似乎我应该使用
Get-MsolUser -All | where {$_.StrongAuthenticationMethods.Count -eq 0} | Select-Object -Property UserPrincipalName
混乱之处是使用$_.StrongAuthenticationRequirements
而不是$_.StrongAuthenticationMethods
答案 2 :(得分:0)
也许使用这里描述的Get-MsolUserByStrongAuthentication
函数会更方便:https://docs.microsoft.com/en-us/powershell/module/msonline/get-msoluserbystrongauthentication?view=azureadps-1.0
答案 3 :(得分:0)
只获取那些被禁用的人
Get-MsolUser -all |
select DisplayName,UserPrincipalName,@{Name="MFA Status"; Expression={
if($_.StrongAuthenticationRequirements.Count -ne 0){
$_.StrongAuthenticationRequirements[0].State
} else {
'Disabled'}
}
} | where-Object -Property 'MFA Status' -eq Disabled | Sort-Object -Property 'DisplayName'