ส่งออกรายงานรหัสผ่านผู้ใช้ Microsoft 365
คุณสามารถตรวจสอบนโยบายการหมดอายุของรหัสผ่านสำหรับทั้งองค์กรของคุณได้ในศูนย์การจัดการ Microsoft 365 ไม่แสดงรายการผู้ใช้แต่ละรายทั้งหมด หากต้องการรับข้อมูลรหัสผ่านโดยละเอียดสำหรับผู้ใช้ Microsoft 365 แต่ละราย คุณต้องเรียกใช้สคริปต์ PowerShell ในบทความนี้ คุณจะได้เรียนรู้วิธีส่งออกรายงานรหัสผ่านผู้ใช้ Microsoft 365 เป็นไฟล์ CSV
ข้อมูลส่งออกสคริปต์ PowerShell รหัสผ่านผู้ใช้ Microsoft 365
หากองค์กรของคุณไม่ได้กำหนดนโยบายการหมดอายุของรหัสผ่าน Microsoft แนะนำให้ตั้งค่ารหัสผ่านให้ไม่มีวันหมดอายุ เมื่อทั้งองค์กรมีนโยบายการหมดอายุของรหัสผ่าน ก็อาจมีผู้ใช้ Microsoft 365 แต่ละรายที่มีนโยบายอื่น นั่นคือจุดที่สคริปต์ PowerShell มาช่วยเหลือ
สคริปต์นี้จะเรียกใช้และรวบรวมข้อมูลต่อไปนี้ต่อผู้ใช้:
- บัตรประจำตัวประชาชน
- ชื่อหลักของผู้ใช้
- จดหมาย
- ชื่อที่แสดง
- นโยบายรหัสผ่าน
- วันที่เปลี่ยนรหัสผ่านครั้งล่าสุด
- วันที่และเวลาที่สร้าง
- โดเมน
- อายุรหัสผ่านสูงสุด
- อายุรหัสผ่าน
- หมดอายุวันที่
- วันเวลาที่เหลือ
เราจะแสดงวิธีรับผลลัพธ์เหล่านี้ในขั้นตอนต่อไป
ส่งออกผู้ใช้ Microsoft 365 เป็น CSV ด้วย PowerShell
ทำตามขั้นตอนต่างๆ และส่งออกรายงานรหัสผ่านผู้ใช้ Microsoft 365 เป็นไฟล์ CSV ด้วย PowerShell
1. ติดตั้ง Microsoft Graph PowerShell
ก่อนที่คุณจะเรียกใช้สคริปต์ PowerShell Export-M365PasswordReport.ps1 คุณต้องติดตั้งโมดูล Microsoft Graph PowerShell
เรียกใช้คำสั่งด้านล่างเพื่อติดตั้งโมดูล Microsoft Graph
Install-Module Microsoft.Graph -Force2. เชื่อมต่อกับ Microsoft Graph PowerShell
คุณต้องเชื่อมต่อกับ MS Graph ด้วยขอบเขตด้านล่าง
Connect-MgGraph -Scopes "User.ReadWrite.All", "Group.ReadWrite.All", "Directory.ReadWrite.All"- ลงชื่อเข้าใช้ด้วยข้อมูลประจำตัวผู้ดูแลระบบของคุณ
- เปิดใช้งานคำยินยอมในนามขององค์กรของคุณ
- คลิก ยอมรับ
3. ดาวน์โหลดสคริปต์ Export-M365PasswordReport PowerShell
หากต้องการดาวน์โหลดสคริปต์ PowerShell Export-M365PasswordReport ให้ทำตามขั้นตอนเหล่านี้:
- ดาวน์โหลดสคริปต์ PowerShell Export-M365PasswordReport.ps1
- หรือคัดลอกสคริปต์ด้านล่างลงใน Notepad และบันทึกเป็นไฟล์ Export-M365PasswordReport.ps1
<#
.SYNOPSIS
.\Export-M365UsersPassword.ps1
.DESCRIPTION
Connect to Microsoft Graph PowerShell first.
The script exports the passwords report for all Microsoft 365 users to a CSV file.
.LINK
Export Microsoft 365 users password report
.NOTES
Written By: o365info
Website: o365info.com
.CHANGELOG
V1.00, 10/26/2023 - Initial version
#>
# Get all domain password expiration policies
$domains = Get-MgDomain | Select-Object Id, PasswordValidityPeriodInDays
$domains | ForEach-Object { if (!$_.PasswordValidityPeriodInDays) { $_.PasswordValidityPeriodInDays = 90 } }
# Get user information
$properties = "Id", "UserPrincipalName", "mail", "displayName", "PasswordPolicies", "LastPasswordChangeDateTime", "CreatedDateTime"
$users = Get-MgUser -Filter "userType eq 'member' and accountEnabled eq true" `
-Property $properties -CountVariable userCount `
-ConsistencyLevel Eventual -All -Verbose | `
Select-Object $properties | Where-Object {
"$(($_.userPrincipalName).Split('@')[1])" -in $($domains.id)
}
# Add properties to the $users objects
$users | Add-Member -MemberType NoteProperty -Name Domain -Value $null
$users | Add-Member -MemberType NoteProperty -Name MaxPasswordAge -Value 0
$users | Add-Member -MemberType NoteProperty -Name PasswordAge -Value 0
$users | Add-Member -MemberType NoteProperty -Name ExpiresOn -Value (Get-Date '1970-01-01')
$users | Add-Member -MemberType NoteProperty -Name DaysRemaining -Value 0
# Get the current datetime for calculation
$timeNow = Get-Date
foreach ($user in $users) {
# Get the user's domain
$userDomain = ($user.userPrincipalName).Split('@')[1]
# Check if the user has "disablepasswordexpiration" set
if ($user.PasswordPolicies -contains "DisablePasswordExpiration") {
# Set values to indicate that the password does not expire for this user
$passwordAge = (New-TimeSpan -Start $user.LastPasswordChangeDateTime -End $timeNow).Days
$user.MaxPasswordAge = "Password does not expire"
$user.PasswordAge = $passwordAge
$user.ExpiresOn = "N/A"
$user.DaysRemaining = "N/A"
}
else {
# Get the maximum password age based on the domain password policy
$maxPasswordAge = ($domains | Where-Object { $_.id -eq $userDomain }).PasswordValidityPeriodInDays
# Check if MaxPasswordAge is 2147483647
if ($maxPasswordAge -eq 2147483647) {
$passwordAge = (New-TimeSpan -Start $user.LastPasswordChangeDateTime -End $timeNow).Days
$user.MaxPasswordAge = "Password does not expire"
$user.PasswordAge = $passwordAge
$user.ExpiresOn = "N/A"
$user.DaysRemaining = "N/A"
}
else {
$passwordAge = (New-TimeSpan -Start $user.LastPasswordChangeDateTime -End $timeNow).Days
$expiresOn = (Get-Date $user.LastPasswordChangeDateTime).AddDays($maxPasswordAge)
$user.PasswordAge = $passwordAge
$user.ExpiresOn = $expiresOn
$user.DaysRemaining = $(
# If the remaining days is negative, show "Expired" instead
if (($daysRemaining = (New-TimeSpan -Start $timeNow -End $expiresOn).Days) -le 0) { "Expired" }
else { $daysRemaining }
)
$user.MaxPasswordAge = $maxPasswordAge
}
}
$user.Domain = $userDomain
}
# Display the results in Out-GridView
$users | Out-GridView
# Export the results to CSV file
$users | Export-Csv -Path "C:\temp\M365UsersPassword.csv" -NoTypeInformation -Encoding UTF8- สร้างโฟลเดอร์ สคริปต์ และ temp ในไดรฟ์ (C:) ของคุณ หากคุณยังไม่มี
- บันทึกสคริปต์ PowerShell Export-M365PasswordReport.ps1 ในโฟลเดอร์ C:\scripts
เปิดไฟล์เพื่อตรวจสอบว่าไม่ได้บล็อกหรือไม่ เพื่อป้องกันข้อผิดพลาดเมื่อเรียกใช้สคริปต์
4. เรียกใช้สคริปต์ Export-M365PasswordReport PowerShell
เรียกใช้ PowerShell ในฐานะผู้ดูแลระบบ และเรียกใช้สคริปต์ PowerShell Export-M365PasswordReport.ps1
C:\scripts\.\Export-M365PasswordReport.ps1สคริปต์ PowerShell เริ่มสแกนผู้ใช้ Microsoft 365 ทั้งหมดในองค์กร อาจใช้เวลาสักครู่หากคุณมีผู้ใช้จำนวนมาก
5. รายงานการหมดอายุของรหัสผ่านผู้ใช้ Out-GridView Microsoft 365
สคริปต์จะแสดงรายการข้อมูลรหัสผ่านผู้ใช้ Microsoft 365 ในหน้าต่างมุมมองตาราง
Out-GridView ปรากฏขึ้นหลังจากสคริปต์เสร็จสิ้น โดยจะแสดงนโยบายรหัสผ่าน (ไม่มี, ว่างเปล่า, DisableStrongPassword หรือ DisablePasswordExpiration) ที่ผู้ใช้ Microsoft 365 แต่ละรายมี
6. เปิดไฟล์ CSV รายงานการหมดอายุของรหัสผ่านผู้ใช้ Microsoft 365 ใน Excel
คุณจะพบไฟล์ M365UsersPassword.csv ในโฟลเดอร์ C:\temp
เปิดไฟล์ CSV ด้วยแอปพลิเคชันเช่น Microsoft Excel เพื่อดูผลลัพธ์
แค่นั้นแหละ.
หมายเหตุ: เมื่อคุณมีรายงานรหัสผ่านผู้ใช้ Microsoft 365 แล้ว คุณสามารถจัดการรหัสผ่านผู้ใช้ Microsoft 365 ได้
อ่านเพิ่มเติม: ส่งออกรายงานขนาดกล่องจดหมาย Microsoft 365 ด้วย PowerShell »
บทสรุป
คุณได้เรียนรู้วิธีส่งออกรายงานรหัสผ่านผู้ใช้ Microsoft 365 เป็นไฟล์ Out-GridView และ CSV ด้วย PowerShell สคริปต์ PowerShell Export-M365PasswordReport.ps1 แสดงรายงานรหัสผ่านโดยละเอียดสำหรับผู้ใช้แต่ละราย คุณจะได้รับภาพรวมที่มีโครงสร้างซึ่งแสดงว่านโยบายรหัสผ่านที่ผู้ใช้แต่ละรายมีและเมื่อรหัสผ่านหมดอายุ
คุณสนุกกับบทความนี้หรือไม่? คุณอาจต้องการส่งออกสิทธิ์การใช้งานผู้ใช้ Microsoft 365 อย่าลืมติดตามเราและแบ่งปันบทความนี้




