Проверка администраторов, которым включен MFA, с использованием методов строгой аутентификации - PullRequest
0 голосов
/ 09 октября 2019

Предстоящий аудит нашего учреждения, и мне просто нужно проверить этот сценарий. потому что наши системные администраторы говорят, что они включены MFA, но когда я запускаю сценарий, он показывает, что это не так. Таким образом, при дальнейшей проверке они могут быть включены с использованием StrongAuthenticationRequirements, а не с помощью методов строгой аутентификации согласно сценарию или коду. Пожалуйста, уточните или просветите меня, потому что я не профессионал, когда дело касается PowerShell.

Function Get-O365AdminMFAStatus{
    $AdminData=@()
    $objRole=@()
    $Domain = $(get-addomain).dnsroot
    $Log = "C:\temp\Audit\$Domain O365 Admin MFA Status $(get-date -f yyyy-MM-dd).csv"

try{
    $Roles = Get-MsolRole | where {$_.name -LIKE "*Administrator*"}
    $Roles = ($Roles).name

    foreach ($Role in $Roles){
        $Members = Get-MsolRoleMember -RoleObjectId (Get-MsolRole -RoleName $Role).ObjectId 
        foreach ($Member in $Members){
            $MsUser = $Member | Get-MsolUser
            if($MsUser.StrongAuthenticationMethods.Count -eq 0) {
                $Enabled = "False"
                write-host $Role - $Member.DisplayName "No MFA enabled" -foregroundcolor red
            }
            Else{
                $Enabled = "True"
                write-host $Role - $Member.DisplayName "MFA enabled" -foregroundcolor green
            }   

            Try{
                $Exist = [bool](Get-mailbox $MsUser.UserPrincipalName -erroraction SilentlyContinue)
                if ($Exist){
                    $MBStats = Get-MailboxStatistics $MsUser.UserPrincipalName
                    $LastLogon = $MBstats.LastLogonTime
                }
                Else{
                    $LastLogon = "N/A"
                }
            }
            Catch{
                $LastLogon = "N/A"
            }

            $objRole = New-Object -TypeName PSObject
            $objRole | Add-Member -MemberType NoteProperty -Name "Role Name" -Value $Role
            $objRole | Add-Member -MemberType NoteProperty -Name "Display Name" -Value $Member.DisplayName
            $objRole | Add-Member -MemberType NoteProperty -Name "UPN" -Value $Member.UserPrincipalName
            $objRole | Add-Member -MemberType NoteProperty -Name "Licensed" -Value $Member.IsLicensed
            $objRole | Add-Member -MemberType NoteProperty -Name "Last Logon" -Value $LastLogon
            $objRole | Add-Member -MemberType NoteProperty -Name "MFA Enabled?" -Value $Enabled

            $AdminData += $objRole
        }
    }

    $AdminData | Export-Csv -NoTypeInformation $Log 
    write-host ""
    write-host "CSV Export Complete to $Log" -foregroundcolor yellow
}
Catch{
    Write-host "There was an error: $($_.Exception.Message)"
}

}

Get-O365AdminMFAStatus

что означает eq-0 ($MsUser.StrongAuthenticationMethods.Count -eq 0)

1 Ответ

0 голосов
/ 10 октября 2019

-eq - это один из операторов сравнения в PowerShell, обозначающий Равно. В этом случае это означает:

Если ($ MsUser.StrongAuth ...... пусто )

например, Если нет методов StrongAuthenticationMethods, то{сделать что-то} Есть много операторов сравнения.

Взгляните на [https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_comparison_operators?view=powershell-5.1][1]

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...