Eksportuj datę i godzinę ostatniej zmiany hasła użytkowników Microsoft 365

Zaleca się, aby nie zmuszać użytkowników do zmiany hasła zgodnie z harmonogramem, chyba że istnieją dowody na naruszenie bezpieczeństwa. Czasami jednak chcesz sprawdzić, kiedy użytkownicy ostatnio zmieniali swoje hasła. W tym artykule dowiesz się, jak wyeksportować datę i godzinę ostatniej zmiany hasła użytkowników Microsoft 365 za pomocą programu Microsoft Graph PowerShell.

Zainstaluj Microsoft Graph PowerShell

Uruchom PowerShell jako administrator i zainstaluj moduł Microsoft Graph PowerShell.

Install-Module Microsoft.Graph -Force

Ważny:Zawsze aktualizuj moduł Microsoft Graph PowerShell do najnowszej wersji przed uruchomieniem polecenia cmdlet lub skryptu, aby zapobiec błędom i nieprawidłowym wynikom.

Połącz się z Microsoft Graph PowerShell

Musisz połączyć się z Microsoft Graph PowerShell z odpowiednimi uprawnieniami.

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

Czy chcesz się połączyć bez interakcji użytkownika, ponieważ chcesz, aby skrypt działał automatycznie? Skonfiguruj za pomocą uwierzytelniania opartego na certyfikatach lub klucza tajnego klienta. Przeczytaj więcej w artykule Połącz się z Microsoft Graph PowerShell.

Aby uzyskać informacje o wszystkich użytkownikach Microsoft 365 wraz z datą i godziną ostatniej zmiany hasła, uruchom poniższe polecenie.

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

Pojawi się wynik.

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

Chociaż wyniki są świetne, potrzebujemy więcej informacji o każdym użytkowniku platformy Microsoft 365. Stwórzmy raport, aby pobrać więcej właściwości i wyeksportować go do pliku CSV.

Eksportuj raport ostatniej zmiany hasła użytkowników Microsoft 365 za pomocą programu PowerShell

Skrypt programu PowerShell Export-M365LastPassChange.ps1 pobierze wszystkich użytkowników oraz datę i godzinę ostatniej zmiany hasła w dzierżawie Microsoft 365/Entra. Następnie wyeksportuje raport do pliku CSV. Możesz otworzyć plik CSV za pomocą programu Microsoft Excel lub dowolnej innej aplikacji obsługującej rozszerzenie pliku CSV.

Skrypt zbierze następujące informacje:

  1. Id
  2. Nazwa główna użytkownika
  3. Poczta
  4. Nazwa wyświetlana
  5. Zasady dotyczące haseł
  6. Data i godzina ostatniej zmiany hasła
  7. Data i godzina utworzenia
  8. Domena
  9. Maksymalny wiek hasła
  10. HasłoWiek
  11. Wygasa w dniu
  12. Pozostało dni

Aby wyeksportować ostatnią zmianę hasła wszystkich użytkowników w Microsoft 365 za pomocą PowerShell, wykonaj poniższe kroki:

Krok 1. Pobierz skrypt Export-M365LastPassChange PowerShell

Utwórz dwa foldery na(C:)prowadzić:

  • Skrypty
  • Temp

Pobierz i umieść skrypt Export-M365LastPassChange.ps1 PowerShell w plikuC: Skryptyfalcówka. Skrypt wyeksportuje wszystkich użytkowników z datą i godziną ostatniej zmiany hasła do raportu w plikuC: Tempfalcówka.

Upewnij się, że plik jest odblokowany, aby zapobiec błędom podczas uruchamiania skryptu. Przeczytaj więcej w artykule Błąd braku podpisu cyfrowego podczas uruchamiania skryptu PowerShell.

Inną opcją jest skopiowanie i wklejenie poniższego kodu do Notatnika. Podaj nazwęEksportuj-M365LastPassChange.ps1i umieść go wC: Skryptyfalcówka.

<#
    .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

Krok 2. Uruchom skrypt Export-M365LastPassChange PowerShell

Uruchom poniższe polecenie, aby uruchomićEksportuj-M365LastPassChange.ps1Skrypt PowerShell i utworzenie raportu.

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

Wynik raportu jest wysyłany do interaktywnej tabeli w osobnym oknie (Out-GridView).

POWIĄZANY:Eksportuj raport dotyczący członków ról administracyjnych platformy Microsoft 365

Krok 3. Sprawdź datę i godzinę ostatniej zmiany hasła użytkownika w pliku CSV

Skrypt PowerShell Export-M365LastPassChange.ps1 eksportuje wszystkich użytkowników wraz z datą i godziną ostatniej zmiany hasła do pliku CSV.

Znajdź plikLastPassChangeReport.csvna ścieżceC:temp.

Otwórz plik CSV ze swoją ulubioną aplikacją. W naszym przykładzie jest to Microsoft Excel.

To wszystko!

Wniosek

Dowiedziałeś się, jak wyeksportować datę i godzinę ostatniej zmiany hasła użytkowników Microsoft 365. Następnym razem, gdy będziesz chciał wymusić na użytkownikach zmianę hasła i chcesz poznać status, możesz uruchomić skrypt i sprawdzić datę i godzinę. Dobrze jest mieć skrypt, który utworzy raport zawierający wszystkie potrzebne informacje.

Czy podobał Ci się ten artykuł? Możesz także zainteresować się konfiguracją ochrony hasłem Microsoft Entra dla wersji lokalnej. Nie zapomnij nas obserwować i udostępnić ten artykuł.

Related Posts