Azure: Auslesen der hinterlegten MFA-Methoden

Möchte man auslesen welcher User Daten in Azure hinterlegt hat, so kann man dies pro User im Azure-Portal tun. Möchte man aber alle Daten zentriert in eine CSV exportieren, so kann man dies mit einem relativ kurzen Powershell-Script tun.

Dies kann unter anderem nützlich sein, wenn man in der Umstellung zu Azure MFA ist. Hier ist es oft interessant, wie viele Benutzer der Aufforderung zur Hinterlegung von Sicherheitsinformationen nachkommen.

<#
Herstellen der Verbindung zu Azure. Es muss das Powershell-Modul "MSOLSERVICE installiert sein.
Informationen zum Installieren findet man unter https://docs.microsoft.com/de-de/office365/enterprise/powershell/connect-to-office-365-powershell
#>

Connect-MsolService

# Mit Get-MsolUser wird eine Liste aller Azure User abgefragt. durch die Pipe werden dann nur diejenigen User angezeigt, die auch eine Lizenz haben
$allAzureUsers = Get-MsolUser -Synchronized -All |?{$_.islicensed} 

Clear-Host
Write-Output "Bitte warten, lese die Sicherheitsinformationen der Azure-User aus"

# Anlegen einer Liste als Array. Darin werden die User samt ihrer Sicherheitsinformationen gesammelt
$liste =@()

# Usercounter - Nur für die Anzeige während des Scripts notwendig
$counter = 1
foreach ($azureuser in $allAzureUsers)
{# Durchlaufen aller lizensierter Azure User
    
    
    # Anzeigen des Fortschritts in %. Realisiert durch die Powershell-Funktion Write-Progress
    Write-Progress -Activity "Rufe Sicherheitsinformationen der User ab." `
    -PercentComplete $(($counter / ($allAzureUsers|measure).count * 100)) `
    -Status "User $counter von $(($allAzureUsers|measure).count)"
    
    <#Es wird ein ein eigenes Objekt namens User angelegt. Dieses Objekt dient nur der besseren Formatierung. 
    In das Objekt werden die Informationen des aktuell betrachteten User geschrieben
    #>
    $user = [pscustomobject]@{

        "Name" = $azureuser.Displayname
        "UserPrincipalName" = $azureuser.Userprincipalname
        "Department" = $azureuser.Department
        "MobilePhone" = $azureuser.MobilePhone
        "MFA_AnzahlMethoden" = 0
        "MFA_PhoneNumber" = ($azureuser |select strongauthenticationuserdetails).strongauthenticationuserdetails.phonenumber
        "MFA_AuthenticatorApps" = ($azureuser.StrongAuthenticationPhoneAppDetails |measure).count
        "MFA_AlternativePhoneNumber" = ($azureuser |select strongauthenticationuserdetails).strongauthenticationuserdetails.alternativephonenumber
        "MFA_EMail" = ($azureuser |select strongauthenticationuserdetails).strongauthenticationuserdetails.email

    }

    if($user.MFA_PhoneNumber)
    {# Wenn Telefonnummer hinterlegt, zähle Anzahl Methoden 1 hoch

        $user.MFA_Anzahlmethoden ++

    }
    
    if($user.MFA_AuthenticatorApps)
    {# Wenn Authenticator hinterlegt, addiere die Anzahl der Methoden um die Anzahl von Authenticatorn hoch

        $user.MFA_Anzahlmethoden += $user.MFA_AuthenticatorApps

    }
    
    if($user.MFA_AlternativePhoneNumber)
    {# Wenn Alternative Telefonnummer vorhanden, zähle Anzahl Methoden 1 hoch

        $user.MFA_Anzahlmethoden ++

    }

    # Der Liste den aktuellen User hinzufügen und den Counter hochzählen
    $liste += $user
    $counter ++

}

# Export der Liste als CSV nach C:\Temp\mfa-methoden_hinterlegt.csv
Write-Host "Die Liste wird exportiert nach `"C:\Temp\mfa-methoden_hinterlegt.csv`""
$liste | sort -Property name| Export-Csv -Path "C:\Temp\mfa-methoden_hinterlegt.csv" -Delimiter ";" -NoTypeInformation -Encoding utf8

Schreibe einen Kommentar