Εξαγωγή της ημερομηνίας και ώρας της τελευταίας αλλαγής κωδικού πρόσβασης χρηστών του Microsoft 365

Συνιστάται να μην αναγκάζετε τους χρήστες να αλλάξουν τον κωδικό πρόσβασής τους σε ένα χρονοδιάγραμμα, εκτός εάν υπάρχουν στοιχεία για παραβίαση ασφαλείας. Ωστόσο, μερικές φορές θέλετε να ελέγξετε πότε οι χρήστες άλλαξαν τον κωδικό πρόσβασής τους για τελευταία φορά. Σε αυτό το άρθρο, θα μάθετε πώς να εξάγετε την ημερομηνία και την ώρα της τελευταίας αλλαγής κωδικού πρόσβασης χρηστών του Microsoft 365 με το Microsoft Graph PowerShell.

Εγκαταστήστε το Microsoft Graph PowerShell

Εκτελέστε το PowerShell ως διαχειριστής και εγκαταστήστε τη μονάδα Microsoft Graph PowerShell.

Install-Module Microsoft.Graph -Force

Σπουδαίος:Πάντα να ενημερώνετε στην πιο πρόσφατη έκδοση της μονάδας Microsoft Graph PowerShell προτού εκτελέσετε ένα cmdlet ή δέσμη ενεργειών για την αποφυγή σφαλμάτων και εσφαλμένων αποτελεσμάτων.

Προτεινόμενη ανάγνωση:Εξαγωγή αναφοράς μελών για ρόλους διαχειριστή του Microsoft 365

Συνδεθείτε στο Microsoft Graph PowerShell

Πρέπει να συνδεθείτε στο Microsoft Graph PowerShell με τα σωστά δικαιώματα.

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

Θέλετε να συνδεθείτε χωρίς αλληλεπίδραση χρήστη επειδή θέλετε ένα σενάριο να εκτελείται αυτόματα; Ρυθμίστε το με έλεγχο ταυτότητας βάσει πιστοποιητικού ή ένα μυστικό πελάτη. Διαβάστε περισσότερα στο άρθρο Σύνδεση στο Microsoft Graph PowerShell.

Για να ενημερώσετε όλους τους χρήστες του Microsoft 365 την ημερομηνία και την ώρα της τελευταίας αλλαγής κωδικού πρόσβασης, εκτελέστε την παρακάτω εντολή.

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

Εμφανίζεται η έξοδος.

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

Αν και η έξοδος είναι εξαιρετική, θέλουμε περισσότερες πληροφορίες για κάθε χρήστη του Microsoft 365. Ας δημιουργήσουμε μια αναφορά για να ανακτήσουμε περισσότερες ιδιότητες και να την εξαγάγουμε σε ένα αρχείο CSV.

Εξαγωγή της αναφοράς τελευταίας αλλαγής κωδικού πρόσβασης χρηστών του Microsoft 365 με το PowerShell

Η δέσμη ενεργειών Export-M365LastPassChange.ps1 PowerShell θα λάβει όλους τους χρήστες και την ημερομηνία και την ώρα της τελευταίας αλλαγής κωδικού πρόσβασης στον μισθωτή Microsoft 365/Entra. Μετά από αυτό, θα εξαγάγει την αναφορά σε αρχείο CSV. Μπορείτε να ανοίξετε το αρχείο CSV με το Microsoft Excel ή οποιαδήποτε άλλη εφαρμογή που υποστηρίζει την επέκταση αρχείου CSV.

Το σενάριο θα συγκεντρώσει τις ακόλουθες πληροφορίες:

  1. Ταυτότητα
  2. UserPrincipalName
  3. Ταχυδρομείο
  4. DisplayName
  5. Πολιτικές κωδικών πρόσβασης
  6. LastPasswordChangeDateTime
  7. CreatedDateTime
  8. Πεδίο ορισμού
  9. MaxPasswordAge
  10. PasswordAge
  11. ExpiresOn
  12. DaysRemaining

Για να εξαγάγετε την τελευταία αλλαγή κωδικού πρόσβασης όλων των χρηστών στο Microsoft 365 με το PowerShell, ακολουθήστε τα παρακάτω βήματα:

Βήμα 1. Κατεβάστε το σενάριο Export-M365LastPassChange PowerShell

Δημιουργήστε δύο φακέλους στο(ΝΤΟ:)οδηγώ:

  • Σενάρια
  • Θερμ

Κάντε λήψη και τοποθετήστε το σενάριο Export-M365LastPassChange.ps1 PowerShell στοΓ: Σενάριαντοσιέ. Το σενάριο θα εξαγάγει όλους τους χρήστες με την τελευταία ημερομηνία και ώρα αλλαγής κωδικού πρόσβασης σε μια αναφορά στοΓ: Θερμντοσιέ.

Βεβαιωθείτε ότι το αρχείο είναι ξεμπλοκαρισμένο για να αποφύγετε σφάλματα κατά την εκτέλεση του σεναρίου. Διαβάστε περισσότερα στο άρθρο Σφάλμα χωρίς ψηφιακή υπογραφή κατά την εκτέλεση δέσμης ενεργειών PowerShell.

Μια άλλη επιλογή είναι να αντιγράψετε και να επικολλήσετε τον παρακάτω κώδικα στο Σημειωματάριο. Δώστε του το όνομαExport-M365LastPassChange.ps1και τοποθετήστε το στοΓ: Σενάριαντοσιέ.

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

Βήμα 2. Εκτελέστε το σενάριο Export-M365LastPassChange PowerShell

Εκτελέστε την παρακάτω εντολή για να εκτελέσετε τοExport-M365LastPassChange.ps1Σενάριο PowerShell και δημιουργία αναφοράς.

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

Η έξοδος της αναφοράς αποστέλλεται σε έναν διαδραστικό πίνακα σε ξεχωριστό παράθυρο (Out-GridView).

Βήμα 3. Ελέγξτε το αρχείο CSV αναφοράς ημερομηνίας και ώρας αλλαγής κωδικού πρόσβασης των χρηστών

Η δέσμη ενεργειών Export-M365LastPassChange.ps1 PowerShell εξάγει όλους τους χρήστες με την τελευταία ημερομηνία και ώρα αλλαγής κωδικού πρόσβασης σε ένα αρχείο CSV.

Βρείτε το αρχείοLastPassChangeReport.csvστο μονοπάτιC: θερμοκρασία.

Ανοίξτε το αρχείο CSV με την αγαπημένη σας εφαρμογή. Στο παράδειγμά μας, είναι το Microsoft Excel.

Αυτό είναι όλο!

Σύναψη

Μάθατε πώς να εξάγετε την ημερομηνία και την ώρα της τελευταίας αλλαγής κωδικού πρόσβασης των χρηστών του Microsoft 365. Την επόμενη φορά που θέλετε να αναγκάσετε τους χρήστες να αλλάξουν τον κωδικό πρόσβασής τους και θέλετε να μάθετε την κατάσταση, μπορείτε να εκτελέσετε το σενάριο και να ελέγξετε την ημερομηνία και την ώρα. Είναι καλό να έχετε ένα σενάριο που δημιουργεί μια αναφορά με όλες τις πληροφορίες που χρειάζεστε.

Σας άρεσε αυτό το άρθρο; Μπορεί επίσης να σας αρέσει Ρύθμιση παραμέτρων προστασίας κωδικού πρόσβασης Microsoft Entra για εσωτερική εγκατάσταση. Μην ξεχάσετε να μας ακολουθήσετε και να μοιραστείτε αυτό το άρθρο.

Related Posts