ค้นหาเว็บไซต์

ส่งออกรายงานผู้ใช้ที่ไม่ได้ใช้งาน Microsoft 365


คุณต้องการค้นหาผู้ใช้ Microsoft 365 ที่ไม่ได้ใช้งานทั้งหมด ไม่มีประโยชน์ในการรักษาบัญชีผู้ใช้ให้ใช้งานได้เมื่อไม่มีกิจกรรมใดๆ บัญชีผู้ใช้ที่ไม่ได้ใช้งานกลายเป็นเป้าหมายของแฮกเกอร์ได้ง่าย และคุณควรปิดการใช้งานบัญชีเหล่านี้ ในบทความนี้ คุณจะได้เรียนรู้วิธีส่งออกรายงานผู้ใช้ที่ไม่ได้ใช้งาน Microsoft 365

ผู้ใช้ Microsoft 365 ที่ไม่ได้ใช้งานคืออะไร

ผู้ใช้ Microsoft 365 ที่ไม่ได้ใช้งานเกิดขึ้นเมื่อผู้ใช้ไม่ได้ลงชื่อเข้าใช้ในช่วงชุดวันที่ผ่านมา สิ่งนี้อาจแตกต่างกันไปในแต่ละองค์กร บางคนพบว่าบัญชีที่ไม่ได้ใช้งานจะใช้งานได้เมื่อไม่มีการลงชื่อเข้าใช้ภายใน 60 หรือ 90 วันที่ผ่านมา บางคนพบว่าเป็นเวลา 30 วัน

Center for Internet Security (CIS) แนะนำให้ลบหรือปิดใช้งานบัญชีที่ไม่มีความเคลื่อนไหวใดๆ หลังจากไม่มีการใช้งานเป็นเวลา 45 วัน หากได้รับการสนับสนุน

ดู 5.3: ปิดการใช้งานบัญชีที่ไม่มีการเคลื่อนไหว

ข้อสำคัญ: คุณต้องมีใบอนุญาตรุ่น Microsoft Entra ID P1 หรือ P2 เพื่อดูวันที่ลงชื่อเข้าใช้ครั้งล่าสุด

ตรวจสอบวันที่ลงชื่อเข้าใช้ครั้งล่าสุดของผู้ใช้ในศูนย์การจัดการ Microsoft 365

เมื่อต้องการตรวจสอบวันที่ลงชื่อเข้าใช้ครั้งล่าสุดของผู้ใช้ Microsoft 365 ในศูนย์การจัดการ Microsoft 365 ให้ทำตามขั้นตอนเหล่านี้:

  1. ลงชื่อเข้าใช้ศูนย์การจัดการ Microsoft 365

  2. ขยาย ผู้ใช้

  3. คลิกที่ ผู้ใช้ที่ใช้งานอยู่

  4. เลือกผู้ใช้

  1. คลิกที่ บัญชี > ดู 30 วันที่ผ่านมา

  1. วันที่ลงชื่อเข้าใช้ล่าสุด สถานะ และสาเหตุของความล้มเหลว (ถ้ามี) จะปรากฏขึ้น

จะทำอย่างไรถ้าคุณต้องการส่งออกสถานะการลงชื่อเข้าใช้ครั้งล่าสุดของผู้ใช้ทั้งหมด PowerShell เพื่อช่วยเหลือ

ส่งออกสคริปต์ PowerShell ผู้ใช้ที่ไม่ได้ใช้งาน Microsoft 365

สคริปต์ Export-M365InactiveUsers.ps1 PowerShell จะได้รับผู้ใช้ Microsoft 365/Microsoft Entra ID ทั้งหมด และส่งออกรายงานเป็นไฟล์ CSV ที่แสดงจำนวนวันที่ผ่านไปนับตั้งแต่ลงชื่อเข้าใช้ครั้งล่าสุด

หมายเหตุ: ค่า LastSuccessfulSignInDate จะเริ่มปรากฏในรายงานภายใน 6 ชั่วโมง ข้อมูลสำหรับพร็อพเพอร์ตี้นี้ไม่ได้รับการทดแทนและเริ่มบันทึกการลงชื่อเข้าใช้หลังจากวันที่ 1 ธันวาคม 2023

สำหรับผู้ใช้ทุกคน จะรวบรวมข้อมูลต่อไปนี้:

  1. รหัส

  2. UserPrincipalName

  3. ชื่อที่แสดง

  4. อีเมล

  5. ประเภทผู้ใช้

  6. เปิดใช้งานบัญชีแล้ว

  7. LastSuccessfulSignInDate

  8. จำนวนวันนับตั้งแต่การลงชื่อเข้าใช้ครั้งล่าสุด

  9. สร้างวันที่และเวลา

  10. ได้รับใบอนุญาตแล้ว

เตรียมสคริปต์ Export-M365InactiveUsers PowerShell

สร้างสองโฟลเดอร์บนไดรฟ์ (C:):

  • อุณหภูมิ

  • สคริปต์

ดาวน์โหลดสคริปต์ Export-M365InactiveUsers.ps1 PowerShell และวางไว้ในโฟลเดอร์ C:\scripts สคริปต์จะส่งออกไฟล์ CSV ไปยังโฟลเดอร์ C:\temp

ตรวจสอบให้แน่ใจว่าไฟล์ไม่ได้ถูกบล็อกเพื่อป้องกันข้อผิดพลาดเมื่อเรียกใช้สคริปต์ อ่านเพิ่มเติมในบทความไม่มีข้อผิดพลาดในการเซ็นชื่อแบบดิจิทัลเมื่อเรียกใช้สคริปต์ PowerShell

อีกทางเลือกหนึ่งคือการคัดลอกและวางโค้ดด้านล่างลงใน Notepad ตั้งชื่อเป็น Export-M365InactiveUsers.ps1 และวางไว้ในโฟลเดอร์ C:\scripts

<#
    .SYNOPSIS
    Export-M365InactiveUsers.ps1

    .DESCRIPTION
    Export Microsoft 365/Microsoft Entra ID inactive users report.

    .LINK
    www.alitajran.com/export-microsoft-365-inactive-users/

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

    .CHANGELOG
    V1.00, 12/13/2023 - Initial version
    V1.10, 02/26/2024 - Added IsLicensed column
    V1.20, 04/02/2024 - Calculate DaysSinceLastSignIn from LastSuccessfulSignInDateTime property
#>

# Export path for CSV file
$CSVPath = "C:\Temp\InactiveUsers.csv"

# Parameters
$InactiveUsers = @()

# Connect to Microsoft Graph API
Connect-MgGraph -Scopes "User.Read.All", "AuditLog.Read.All"

# Get properties
$Properties = @(
    'Id',
    'DisplayName',
    'Mail',
    'UserPrincipalName',
    'UserType',
    'AccountEnabled',
    'SignInActivity',
    'CreatedDateTime',
    'AssignedLicenses'
)

# Get all users along with the properties
$AllUsers = Get-MgBetaUser -All -Property $Properties | Select-Object $Properties

foreach ($User in $AllUsers) {
    $LastSuccessfulSignInDate = if ($User.SignInActivity.LastSuccessfulSignInDateTime) {
        $User.SignInActivity.LastSuccessfulSignInDateTime
    }
    else {
        "Never Signed-in."
    }

    $DaysSinceLastSignIn = if ($User.SignInActivity.LastSuccessfulSignInDateTime) {
        (New-TimeSpan -Start $User.SignInActivity.LastSuccessfulSignInDateTime -End (Get-Date)).Days
    }
    else {
        "N/A"
    }

    # Check if the user is licensed
    $IsLicensed = if ($User.AssignedLicenses) {
        "Yes"
    }
    else {
        "No"
    }

    # Collect data
    if (!$User.SignInActivity.LastSuccessfulSignInDateTime -or (Get-Date $User.SignInActivity.LastSuccessfulSignInDateTime)) {
        $InactiveUsers += [PSCustomObject]@{
            Id                       = $User.Id
            UserPrincipalName        = $User.UserPrincipalName
            DisplayName              = $User.DisplayName
            Email                    = $User.Mail
            UserType                 = $User.UserType
            AccountEnabled           = $User.AccountEnabled
            LastSuccessfulSignInDate = $LastSuccessfulSignInDate
            DaysSinceLastSignIn      = $DaysSinceLastSignIn
            CreatedDateTime          = $User.CreatedDateTime
            IsLicensed               = $IsLicensed
        }
    }
}

# Display data using Out-GridView
$InactiveUsers | Out-GridView -Title "Inactive Users"

# Export data to CSV file
try {
    $InactiveUsers | Export-Csv -Path $CSVPath -NoTypeInformation -Encoding UTF8
    Write-Host "Script completed. Results exported to $CSVPath." -ForegroundColor Cyan
}
catch {
    Write-Host "Error occurred while exporting to CSV: $_" -ForegroundColor Red
}
  • บรรทัดที่ 23: แก้ไขเส้นทางไฟล์ CSV

เชื่อมต่อกับ Microsoft Graph PowerShell

ก่อนที่เราจะดำเนินการต่อไปและรับสถานะไม่ใช้งานสำหรับผู้ใช้ทั้งหมด เราจำเป็นต้องติดตั้งและเชื่อมต่อกับ Microsoft Graph PowerShell

เริ่ม Windows PowerShell ในฐานะผู้ดูแลระบบและเรียกใช้คำสั่งด้านล่าง

Install-Module Microsoft.Graph -Force
Install-Module Microsoft.Graph.Beta -AllowClobber -Force

ข้อสำคัญ: ติดตั้งโมดูล Microsoft Graph PowerShell และ Microsoft Graph Beta PowerShell เสมอ นั่นเป็นเพราะบาง cmdlet ยังไม่พร้อมใช้งานในเวอร์ชันสุดท้าย และจะไม่ทำงาน อัปเดตทั้งสองโมดูลเป็นเวอร์ชันล่าสุดก่อนที่คุณจะเรียกใช้ cmdlet หรือสคริปต์เพื่อป้องกันข้อผิดพลาดและผลลัพธ์ที่ไม่ถูกต้อง

เรียกใช้ Connect-MgGraph cmdlet

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

เรียกใช้สคริปต์ Export-M365InactiveUsers PowerShell

รับผู้ใช้ที่ไม่ได้ใช้งานทั้งหมดด้วย PowerShell เรียกใช้คำสั่งด้านล่างเพื่อเรียกใช้สคริปต์ Export-M365InactiveUsers.ps1

c:\scripts\.\Export-M365InactiveUsers.ps1

Out-GridView

Out-GridView จะแสดงคอลัมน์พร้อมผู้ใช้ที่ไม่ได้ใช้งานทั้งหมดและข้อมูลอื่นๆ อีกมากมาย

เปิดไฟล์ CSV รายงานผู้ใช้ที่ไม่ได้ใช้งาน Microsoft 365

สคริปต์ Export-M365InactiveUsers.ps1 PowerShell จะส่งออกการไม่ใช้งานของผู้ใช้ Microsft 365 ไปยังไฟล์ CSV ค้นหาไฟล์ InactiveUsers.csv ในเส้นทาง C:\temp

เปิดไฟล์ CSV ด้วยแอปพลิเคชันที่คุณชื่นชอบ ในตัวอย่างของเรา มันคือ Microsoft Excel

สิ่งนี้ช่วยให้คุณส่งออกผู้ใช้ที่ไม่ได้ใช้งาน Microsoft 365 เป็นไฟล์ CSV หรือไม่

หมายเหตุ: คุณต้องการทำความเข้าใจ คุณสมบัติการลงชื่อเข้าใช้ ทั้งสามรายการ และวิธีการเรียกข้อมูลหรือไม่ อ่านบทความส่งออกวันที่และเวลาลงชื่อเข้าใช้ของผู้ใช้ Microsoft 365 ครั้งล่าสุด

อ่านเพิ่มเติม: บล็อกการลงชื่อเข้าใช้จากกล่องจดหมายที่แชร์ »

บทสรุป

คุณได้เรียนรู้วิธีส่งออกผู้ใช้ที่ไม่ได้ใช้งานจาก Microsoft 365 รับรายงานผู้ใช้ที่ไม่ได้ใช้งานด้วยสคริปต์ Export-M365InactiveUsers PowerShell และตรวจสอบอย่างละเอียด ตรวจสอบสาเหตุที่ไม่มีกิจกรรมการลงชื่อเข้าใช้ของผู้ใช้และปิดใช้งานบัญชีผู้ใช้ที่ไม่ได้ใช้งานเพื่อปกป้ององค์กรของคุณ

คุณสนุกกับบทความนี้หรือไม่? คุณอาจต้องการส่งออกผู้ใช้ Azure AD เป็น CSV ด้วย PowerShell อย่าลืมติดตามเราและแบ่งปันบทความนี้

บทความที่เกี่ยวข้อง