Exporteer Microsoft 365-gebruikers Laatste wachtwoordwijzigingsdatum en -tijd

Het wordt aanbevolen om gebruikers niet te dwingen hun wachtwoord volgens een schema te wijzigen, tenzij er aanwijzingen zijn voor een inbreuk op de beveiliging. Soms wilt u echter controleren wanneer de gebruikers voor het laatst hun wachtwoord hebben gewijzigd. In dit artikel leert u hoe u de datum en tijd van de laatste wachtwoordwijziging van Microsoft 365-gebruikers kunt exporteren met Microsoft Graph PowerShell.

Installeer Microsoft Graph PowerShell

Voer PowerShell uit als beheerder en installeer de Microsoft Graph PowerShell-module.

Install-Module Microsoft.Graph -Force

Belangrijk:Update altijd naar de nieuwste versie van de Microsoft Graph PowerShell-module voordat u een cmdlet of script uitvoert om fouten en onjuiste resultaten te voorkomen.

Maak verbinding met Microsoft Graph PowerShell

U moet verbinding maken met Microsoft Graph PowerShell met de juiste machtigingen.

Connect-MgGraph -Scopes "User.Read.All"

Wilt u verbinding maken zonder gebruikersinteractie omdat u wilt dat een script automatisch wordt uitgevoerd? Stel het in met certificaatgebaseerde authenticatie of een clientgeheim. Lees meer in het artikel Verbinding maken met Microsoft Graph PowerShell.

Ontvang de datum en tijd van de laatste wijziging van het wachtwoord van Microsoft 365-gebruikers

Voer de onderstaande opdracht uit om alle Microsoft 365-gebruikers de datum en tijd van hun laatste wachtwoordwijziging te geven.

Get-MgUser -All -Property DisplayName, UserPrincipalName, LastPasswordChangeDateTime | Select-Object -Property DisplayName, UserPrincipalName, LastPasswordChangeDateTime

De uitvoer verschijnt.

DisplayName    UserPrincipalName        LastPasswordChangeDateTime
-----------    -----------------        --------------------------
Alison Bell    [email protected]    16/04/2024 17:57:46
Amanda Morgan  [email protected]  04/06/2024 17:39:05
Audrey Graham  [email protected]  11/10/2024 11:12:34
Boris Campbell [email protected] 11/12/2024 17:12:17

Hoewel de resultaten geweldig zijn, willen we meer informatie over elke Microsoft 365-gebruiker. Laten we een rapport maken om meer eigenschappen op te halen en dit naar een CSV-bestand te exporteren.

Exporteer het rapport over de laatste wachtwoordwijziging van Microsoft 365-gebruikers met PowerShell

Het PowerShell-script Export-M365LastPassChange.ps1 haalt alle gebruikers en de datum en tijd van hun laatste wachtwoordwijziging op in de Microsoft 365/Entra-tenant. Daarna exporteert het het rapport naar een CSV-bestand. U kunt het CSV-bestand openen met Microsoft Excel of een andere toepassing die de CSV-bestandsextensie ondersteunt.

Het script verzamelt de volgende informatie:

  1. Identiteitskaart
  2. GebruikerPrincipalName
  3. Mail
  4. Weergavenaam
  5. Wachtwoordbeleid
  6. LaatsteWachtwoordVeranderDatumTijd
  7. GemaaktDatumTijd
  8. Domein
  9. MaxPasswordLeeftijd
  10. WachtwoordLeeftijd
  11. VerlooptAan
  12. Resterende dagen

Volg de onderstaande stappen om de laatste wachtwoordwijziging van alle gebruikers in Microsoft 365 met PowerShell te exporteren:

Stap 1. Download Export-M365LastPassChange PowerShell-script

Maak twee mappen op de(C:)drijfveer:

  • Scripts
  • Temp

Download en plaats het Export-M365LastPassChange.ps1 PowerShell-script in hetC:Scriptsmap. Het script exporteert alle gebruikers met de datum en tijd van hun laatste wachtwoordwijziging naar een rapport in deC:Tempmap.

Zorg ervoor dat het bestand is gedeblokkeerd om fouten bij het uitvoeren van het script te voorkomen. Lees meer in het artikel Fout niet digitaal ondertekend bij het uitvoeren van PowerShell-script.

Een andere optie is om de onderstaande code te kopiëren en in Kladblok te plakken. Geef het de naamExport-M365LastPassChange.ps1en plaats deze in deC:Scriptsmap.

<#
    .SYNOPSIS
    .Export-M365LastPassChange.ps1

    .DESCRIPTION
    The script exports the last password change date and time, and more properties
    for all Microsoft 365 users to a CSV file.

    .LINK
    www.alitajran.com/export-microsoft-365-users-last-password-change-date-and-time/

    .NOTES
    Written by: ALI TAJRAN
    Website:    www.alitajran.com
    LinkedIn:   linkedin.com/in/alitajran
    X:          x.com/alitajran

    .CHANGELOG
    V1.00, 12/23/2024 - Initial version
#>

param (
    [Parameter(Mandatory = $true)]
    [string]$ExportPath
)

# Connect to Microsoft Graph PowerShell
Connect-MgGraph -Scopes "User.Read.All", "Domain.Read.All" -NoWelcome

# Define CSV file export location variable using the parameter provided
$Csvfile = "$ExportPath"

# Retrieve all domain password policies
$domains = Get-MgDomain | Select-Object Id, PasswordValidityPeriodInDays

# Define the properties to retrieve for users
$properties = @(
    "Id",
    "UserPrincipalName",
    "mail",
    "displayName",
    "PasswordPolicies",
    "LastPasswordChangeDateTime",
    "CreatedDateTime"
)

# Splat the user parameters
$userParams = @{
    Filter           = "userType eq 'member' and accountEnabled eq true"
    Property         = $properties
    CountVariable    = 'userCount'
    ConsistencyLevel = 'Eventual'
    All              = $true
    Verbose          = $true
}

# Fetch user information
$users = Get-MgUser @userParams | Select-Object $properties

# Get the current datetime for calculation
$timeNow = Get-Date

# Initialize a List to store user information
$Report = [System.Collections.Generic.List[Object]]::new()

# Process users and gather required data
foreach ($user in $users) {
    $userDomain = ($user.userPrincipalName).Split('@')[1]
    $maxPasswordAge = ($domains | Where-Object { $_.Id -eq $userDomain }).PasswordValidityPeriodInDays

    if ($user.PasswordPolicies -contains "DisablePasswordExpiration" -or $maxPasswordAge -eq 2147483647) {
        $ReportLine = [PSCustomObject][Ordered]@{
            Id                         = $user.Id
            UserPrincipalName          = $user.UserPrincipalName
            Mail                       = $user.mail
            DisplayName                = $user.DisplayName
            PasswordPolicies           = $user.PasswordPolicies -join "; "
            LastPasswordChangeDateTime = $user.LastPasswordChangeDateTime
            CreatedDateTime            = $user.CreatedDateTime
            Domain                     = $userDomain
            MaxPasswordAge             = "Password does not expire"
            PasswordAge                = (New-TimeSpan -Start $user.LastPasswordChangeDateTime -End $timeNow).Days
            ExpiresOn                  = "N/A"
            DaysRemaining              = "N/A"
        }
        # Add the report line to the List
        $Report.Add($ReportLine)
    }
    else {
        $expiresOn = $user.LastPasswordChangeDateTime.AddDays($maxPasswordAge)
        $daysRemaining = (New-TimeSpan -Start $timeNow -End $expiresOn).Days
        $ReportLine = [PSCustomObject][Ordered]@{
            Id                         = $user.Id
            UserPrincipalName          = $user.UserPrincipalName
            Mail                       = $user.mail
            DisplayName                = $user.DisplayName
            PasswordPolicies           = $user.PasswordPolicies -join "; "
            LastPasswordChangeDateTime = $user.LastPasswordChangeDateTime
            CreatedDateTime            = $user.CreatedDateTime
            Domain                     = $userDomain
            MaxPasswordAge             = $maxPasswordAge
            PasswordAge                = (New-TimeSpan -Start $user.LastPasswordChangeDateTime -End $timeNow).Days
            ExpiresOn                  = $expiresOn
            DaysRemaining              = if ($daysRemaining -le 0) { "Expired" } else { $daysRemaining }
        }
        # Add the report line to the List
        $Report.Add($ReportLine)
    }
}

# Sort on UserPrincipalName
$Report = $Report | Sort-Object UserPrincipalName

# Display the results in Out-GridView
$Report | Out-GridView -Title "Microsoft 365 Users Last Password Change Date and Time Report"

# Export results to CSV
$Report | Export-Csv -Path $Csvfile -NoTypeInformation -Encoding utf8
Write-Host "Script completed. Report exported to $Csvfile" -ForegroundColor Cyan

Stap 2. Voer het Export-M365LastPassChange PowerShell-script uit

Voer de onderstaande opdracht uit om hetExport-M365LastPassChange.ps1PowerShell-script en om een ​​rapport te maken.

C:scripts.Export-M365LastPassChange.ps1 -ExportPath "C:tempLastPassChangeReport.csv"

De rapportuitvoer wordt naar een interactieve tabel in een apart venster (Out-GridView) gestuurd.

VERWANT:Exporteer het Microsoft 365-beheerdersrollenledenrapport

Stap 3. Controleer het CSV-bestand met het laatste wachtwoordwijzigingsdatum en -tijdrapport van de gebruiker

Het PowerShell-script Export-M365LastPassChange.ps1 exporteert alle gebruikers met de datum en tijd van hun laatste wachtwoordwijziging naar een CSV-bestand.

Zoek het bestandLastPassChangeReport.csvin het padC:temp.

Open het CSV-bestand met uw favoriete applicatie. In ons voorbeeld is dit Microsoft Excel.

Dat is het!

Conclusie

U hebt geleerd hoe u de datum en tijd van de laatste wachtwoordwijziging van Microsoft 365-gebruikers kunt exporteren. De volgende keer dat u gebruikers wilt dwingen hun wachtwoord te wijzigen en u de status wilt weten, kunt u het script uitvoeren en de datum en tijd controleren. Het is goed om een ​​script te hebben dat een rapport maakt met alle informatie die je nodig hebt.

Vond je dit artikel leuk? Wellicht vindt u Configureer Microsoft Entra-wachtwoordbeveiliging voor on-premises ook interessant. Vergeet ons niet te volgen en dit artikel te delen.

Related Posts