在Azure上收集用户的MFA状态

时间:2018-07-10 14:05:48

标签: powershell azure

我正在尝试从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。还有其他方法还是我忽略了某些东西?

4 个答案:

答案 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'