จัดการรหัสผ่านผู้ใช้ Microsoft 365
Microsoft แนะนำให้ตั้งค่านโยบายการหมดอายุของรหัสผ่าน Microsoft 365 ให้ไม่มีวันหมดอายุ เนื่องจากข้อกำหนดการหมดอายุของรหัสผ่านมีผลเสียมากกว่าผลดี เมื่อผู้ใช้ได้รับข้อความหรือการแจ้งเตือนให้เปลี่ยนรหัสผ่าน ผู้ใช้จะเพิ่มตัวเลขหรือสัญลักษณ์ด้านหลังรหัสผ่านที่มีอยู่และตั้งเป็นรหัสผ่านใหม่ นี่เป็นปัญหา ในบทความนี้ คุณจะได้เรียนรู้วิธีจัดการรหัสผ่านผู้ใช้ Microsoft 365 ด้วย Microsoft Graph PowerShell
นโยบายการหมดอายุของรหัสผ่าน
บัญชี Microsoft 365 มีนโยบายรหัสผ่านที่กำหนดไว้ล่วงหน้าซึ่งไม่สามารถเปลี่ยนแปลงได้ ผู้ดูแลระบบสามารถทำให้ผู้ใช้ รหัสผ่านหมดอายุหลังจากผ่านไปตามจำนวนวันที่กำหนด (ค่าเริ่มต้นคือ 90 วัน) หรือ ตั้งรหัสผ่านให้ไม่มีวันหมดอายุ ตามค่าเริ่มต้น รหัสผ่านจะถูกตั้งค่าให้ไม่มีวันหมดอายุสำหรับองค์กรของคุณ
มีแนวทางรหัสผ่านสำหรับผู้ดูแลระบบในการกำหนดค่ารหัสผ่านที่ปลอดภัย เพื่อให้องค์กรของคุณปลอดภัยที่สุดเท่าที่จะเป็นไปได้ รหัสผ่านควรเป็นไปตามข้อกำหนดที่ซับซ้อน เช่น ความยาวขั้นต่ำ 8 อักขระ หรือไม่สามารถกำหนดค่าได้
การตั้งค่านโยบายรหัสผ่านสำหรับผู้ใช้ในองค์กรของคุณเป็นสิ่งสำคัญ คุณสามารถรีเซ็ตรหัสผ่านผู้ใช้หรือรหัสผ่านเป็นกลุ่มได้ตลอดเวลา
เราจะแสดงวิธีจัดการรหัสผ่านผู้ใช้ในศูนย์การจัดการ Microsoft 365 และด้วย Microsoft Graph PowerShell
หมายเหตุ: เราขอแนะนำให้เรียกใช้รายงานส่งออกรหัสผ่านผู้ใช้ Microsoft 365 และตรวจสอบรายละเอียดรหัสผ่านสำหรับผู้ใช้ทุกคนก่อนและหลังจากที่คุณใช้การเปลี่ยนแปลงใดๆ
เชื่อมต่อกับ Microsoft Graph PowerShell
ก่อนที่คุณจะเริ่มต้น คุณต้องติดตั้งโมดูล Microsoft Graph PowerShell รวมถึงโมดูล Microsoft Graph Beta
เรียกใช้คำสั่งด้านล่างเพื่อติดตั้งโมดูล Microsoft Graph
Install-Module Microsoft.Graph -Force
Install-Module Microsoft.Graph.Beta -AllowClobber -Forceจากนั้น เชื่อมต่อกับ Microsoft Graph PowerShell ด้วยสิทธิ์ด้านล่าง
Connect-MgGraph -Scopes "User.ReadWrite.All", "Group.ReadWrite.All", "Directory.ReadWrite.All", "Directory.AccessAsUser.All"ตอนนี้คุณพร้อมที่จะใช้คำสั่ง Microsoft Graph PowerShell แล้ว
1. ตั้งค่านโยบายการหมดอายุของรหัสผ่านไม่ให้หมดอายุสำหรับโดเมน
เราจะตั้งค่านโยบายการหมดอายุของรหัสผ่านให้ไม่มีวันหมดอายุสำหรับทุกคนในองค์กร โดยมีดังต่อไปนี้:
- ศูนย์การจัดการ Microsoft 365
- ไมโครซอฟต์กราฟ PowerShell
ตั้งค่านโยบายการหมดอายุของรหัสผ่านให้ไม่มีวันหมดอายุในศูนย์การจัดการ Microsoft 365
เมื่อต้องการตั้งรหัสผ่านให้ไม่มีวันหมดอายุในศูนย์การจัดการ Microsoft 365 ให้ทำตามขั้นตอนเหล่านี้:
- ลงชื่อเข้าใช้ศูนย์การจัดการ Microsoft 365
- ขยาย การตั้งค่า และคลิก การตั้งค่าองค์กร
- คลิกแท็บ ความปลอดภัยและความเป็นส่วนตัว
- เลือก นโยบายการหมดอายุของรหัสผ่าน จากรายการ
- เลือกช่องทำเครื่องหมาย ตั้งรหัสผ่านให้ไม่มีวันหมดอายุ (แนะนำ)
- คลิกบันทึก
คุณได้ตั้งค่ารหัสผ่านไม่มีวันหมดอายุสำหรับองค์กรของคุณในศูนย์การจัดการ Microsoft 365 ต่อไป เราจะแสดงวิธีจัดการรหัสผ่านผู้ใช้ Microsoft 365 ด้วย PowerShell
ตั้งค่านโยบายการหมดอายุของรหัสผ่านให้ไม่มีวันหมดอายุด้วย PowerShell
คุณสามารถตั้งรหัสผ่านให้ไม่มีวันหมดอายุสำหรับทั้งโดเมนได้
เรียกใช้คำสั่ง PowerShell ด้านล่าง
Update-MgDomain -DomainId "m365info.com" -PasswordValidityPeriodInDays "2147483647"หมายเหตุ: จะตั้งค่า รหัสผ่านให้ไม่มีวันหมดอายุ สำหรับทั้งโดเมน แต่ไม่ใช่สำหรับผู้ใช้แต่ละรายที่ได้ตั้งค่า รหัสผ่านให้ไม่มีวันหมดอายุ ก่อนหน้านี้ โปรดจำไว้ว่าจะ ไม่ เขียนทับผู้ใช้เหล่านี้
2. กำหนดนโยบายการหมดอายุของรหัสผ่านให้หมดอายุสำหรับโดเมน
คุณสามารถตั้งค่านโยบายรหัสผ่านให้หมดอายุสำหรับทั้งโดเมนได้ด้วย PowerShell เมื่อคุณกำหนดนโยบายการหมดอายุของรหัสผ่านให้กับทุกคนในองค์กรแล้ว คุณจะเปลี่ยนการตั้งค่าได้ตลอดเวลา เราจะแสดงวิธีเปลี่ยนนโยบายการหมดอายุของรหัสผ่านและตั้งค่าดังต่อไปนี้:
- วันแจ้งรหัสผ่าน
- วันหมดอายุของรหัสผ่าน
ตั้งค่านโยบายการหมดอายุของรหัสผ่านให้หมดอายุในศูนย์การจัดการ Microsoft 365
หากต้องการตั้งรหัสผ่านให้หมดอายุในศูนย์การจัดการ Microsoft 365 ให้ทำตามขั้นตอนเหล่านี้:
- ลงชื่อเข้าใช้ศูนย์การจัดการ Microsoft 365
- ขยาย การตั้งค่า และคลิก การตั้งค่าองค์กร
- คลิกแท็บ ความปลอดภัยและความเป็นส่วนตัว
- เลือก นโยบายการหมดอายุของรหัสผ่าน จากรายการ
- ล้างช่องทำเครื่องหมาย ตั้งรหัสผ่านให้ไม่มีวันหมดอายุ (แนะนำ)
- พิมพ์ตัวเลขระหว่าง 14 ถึง 730 วัน
- คลิกบันทึก
ตั้งรหัสผ่านให้หมดอายุสำหรับโดเมน Microsoft 365
คุณสามารถตั้งค่า รหัสผ่านให้หมดอายุ สำหรับทั้งโดเมนด้วย PowerShell เราจะเพิ่มพารามิเตอร์ที่จะตั้งค่ารหัสผ่าน วันที่แจ้งเตือน และ วันที่ใช้งานได้
หากคุณตั้งค่านโยบายรหัสผ่านให้หมดอายุสำหรับโดเมนของคุณแล้ว คุณสามารถเปลี่ยนวันหมดอายุของรหัสผ่านได้
- -PasswordNotificationWindowInDays
ระบุจำนวนวันก่อนที่ผู้ใช้จะได้รับการแจ้งเตือนว่ารหัสผ่านจะหมดอายุ หากไม่ได้ตั้งค่าคุณสมบัติ ระบบจะใช้ค่าเริ่มต้น 14 วัน
- -PasswordValidityPeriodInDays
ระบุระยะเวลาที่รหัสผ่านใช้ได้ก่อนที่จะต้องเปลี่ยน หากไม่ได้ตั้งค่าคุณสมบัติ ระบบจะใช้ค่าเริ่มต้น 90 วัน
เราจะตั้งค่า รหัสผ่านให้หมดอายุ สำหรับทั้งโดเมน ข้อแตกต่างเพียงอย่างเดียวคือจะไม่ผ่านผู้ใช้แต่ละคน ดังนั้น หากผู้ใช้บางรายได้ตั้งค่า รหัสผ่านให้ไม่มีวันหมดอายุ ไว้แล้ว ก็จะไม่เปลี่ยนให้กับผู้ใช้เหล่านี้
ดูไวยากรณ์คำสั่ง PowerShell
Update-MgDomain -DomainId "Domain ID" -PasswordNotificationWindowInDays "Number Of Days" -PasswordValidityPeriodInDays "Number Of Days"เรียกใช้ตัวอย่างคำสั่ง PowerShell ด้านล่าง
Update-MgDomain -DomainId "m365info.com" -PasswordNotificationWindowInDays "30" -PasswordValidityPeriodInDays "180"โดยจะตั้งค่า รหัสผ่านให้หมดอายุ สำหรับทั้งโดเมน และตั้งค่ารหัสผ่าน วันที่แจ้งเตือน (30) และ วันที่ใช้งานได้ (180)
หมายเหตุ: จะตั้งค่า รหัสผ่านให้ไม่มีวันหมดอายุ สำหรับทั้งโดเมน แต่หากผู้ใช้รายบุคคลได้ตั้งค่า รหัสผ่านให้ไม่มีวันหมดอายุ แล้ว จะไม่เขียนทับผู้ใช้รายนี้
3. ตั้งรหัสผ่านให้ไม่มีวันหมดอายุสำหรับผู้ใช้
เราจะแสดงวิธีการตั้งค่า รหัสผ่านให้ไม่มีวันหมดอายุ สำหรับ:
- ผู้ใช้ Microsoft 365 คนเดียวที่มี PowerShell
- รวมกลุ่มผู้ใช้ Microsoft 365 ทั้งหมดด้วย PowerShell
ตั้งรหัสผ่านให้ไม่มีวันหมดอายุสำหรับผู้ใช้ Microsoft 365 รายเดียว
เราจะตั้งรหัสผ่านให้ไม่มีวันหมดอายุสำหรับผู้ใช้ Microsoft 365 รายใดรายหนึ่ง Brenda.Smith@m365info.com
คุณสามารถใช้หมายเลข UserPrincipalName หรือ รหัสผู้ใช้
ดูไวยากรณ์คำสั่ง PowerShell ด้านล่าง
Update-MgUser -UserId "UPN or User ID" -PasswordPolicies DisablePasswordExpirationเรียกใช้ตัวอย่างคำสั่ง PowerShell
Update-MgUser -UserId "d912b0fc-6f7e-4ec2-a9e4-854ed27a511a" -PasswordPolicies DisablePasswordExpirationมันจะตั้งค่า รหัสผ่านไม่มีวันหมดอายุ สำหรับผู้ใช้คนเดียว
รหัสผ่านที่ตั้งเป็นกลุ่มจะไม่มีวันหมดอายุสำหรับผู้ใช้ Microsoft 365 ทุกคน
ตั้งค่า รหัสผ่านไม่มีวันหมดอายุ จำนวนมากสำหรับผู้ใช้ Microsoft 365 ทุกคน นี่คือตัวเลือกเริ่มต้นที่ Microsoft แนะนำ
เรียกใช้สคริปต์ PowerShell ด้านล่าง
# Fetch all Azure AD users
$users = Get-MgUser -All
foreach ($user in $users) {
$UserId = $user.Id
$DisplayName = $user.DisplayName
Write-Progress -Activity "Setting password to never expire for $DisplayName" -Status "Processing $DisplayName"
try {
# Update user to enable password expiration
Update-MgUser -UserId $UserId -PasswordPolicies DisablePasswordExpiration -ErrorAction Stop
Write-Host "Password to never expire set for $DisplayName" -ForegroundColor Green
}
catch {
Write-Host "Can't set password to never expire for $DisplayName" -ForegroundColor Red
}
}มันจะตั้งค่า รหัสผ่านไม่มีวันหมดอายุ สำหรับผู้ใช้ Microsoft 365 ทั้งหมดในองค์กรของคุณ
4. ตั้งรหัสผ่านให้หมดอายุสำหรับผู้ใช้
เราจะแสดงวิธีตั้งค่ารหัสผ่านให้หมดอายุสำหรับผู้ใช้ Microsoft 365 รายเดียวและผู้ใช้ Microsoft 365 ทั้งหมด
- ผู้ใช้ Microsoft 365 คนเดียวที่มี PowerShell
- รวมกลุ่มผู้ใช้ Microsoft 365 ทั้งหมดด้วย PowerShell
ตั้งรหัสผ่านให้หมดอายุสำหรับผู้ใช้ Microsoft 365 คนเดียว
เราจะตั้งค่ารหัสผ่านให้หมดอายุสำหรับผู้ใช้ Microsoft 365 ที่ระบุ Brenda.Smith@m365info.com
คุณสามารถใช้หมายเลข UserPrincipalName หรือ รหัสผู้ใช้
ดูไวยากรณ์คำสั่ง PowerShell ด้านล่าง
Update-MgUser -UserId "UPN or User ID" -PasswordPolicies Noneเรียกใช้ตัวอย่างคำสั่ง PowerShell
Update-MgUser -UserId "d912b0fc-6f7e-4ec2-a9e4-854ed27a511a" -PasswordPolicies Noneมันจะตั้งค่า รหัสผ่านให้หมดอายุ สำหรับผู้ใช้คนเดียวโดยมีการแจ้งเตือนค่าเริ่มต้น (14) วัน และวันหมดอายุ (90)
ตั้งรหัสผ่านจำนวนมากเพื่อหมดอายุสำหรับผู้ใช้ Microsoft 365 ทั้งหมด
เราจะตั้งค่า รหัสผ่านให้หมดอายุ เป็นกลุ่มสำหรับผู้ใช้ Microsoft 365 ทั้งหมด
เรียกใช้สคริปต์ PowerShell ด้านล่าง
# Fetch all Azure AD users
$users = Get-MgUser -All
foreach ($user in $users) {
$UserId = $user.Id
$DisplayName = $user.DisplayName
Write-Progress -Activity "Set password to expire for $DisplayName" -Status "Processing $DisplayName"
try {
# Update user to disable password expiration
Update-MgUser -UserId $UserId -PasswordPolicies None -ErrorAction Stop
Write-Host "Set password to expire set for $DisplayName" -ForegroundColor Green
}
catch {
Write-Host "Can't set password to expire for $DisplayName" -ForegroundColor Red
}
}คุณตั้งค่ารหัสผ่านให้หมดอายุสำหรับผู้ใช้ Microsoft 365 ทั้งหมดในองค์กรของคุณ
หมายเหตุ: ระบบจะตั้งค่า รหัสผ่านให้หมดอายุ สำหรับผู้ใช้แต่ละรายในองค์กร แม้ว่าผู้ใช้แต่ละรายจะตั้ง รหัสผ่านไม่มีวันหมดอายุ ไว้ก่อนหน้านี้ก็ตาม โปรดจำไว้ว่ามันจะเขียนทับผู้ใช้ทั้งหมด
5. ตั้งรหัสผ่านที่กำหนดไว้ล่วงหน้าสำหรับผู้ใช้
เราจะแสดงวิธีตั้งรหัสผ่านที่กำหนดไว้ล่วงหน้าสำหรับ:
- ผู้ใช้ Microsoft 365 คนเดียว
- รวมผู้ใช้ Microsoft 365 ทั้งหมดเป็นกลุ่ม
- ผู้ใช้ Microsoft 365 (CSV) หลายคน
สร้างผู้ใช้ Microsoft 365 ใหม่ด้วยรหัสผ่านที่กำหนดไว้ล่วงหน้า
คุณสามารถสร้างผู้ใช้ใหม่เพียงรายเดียวและตั้งรหัสผ่านที่กำหนดไว้ล่วงหน้าได้
ระบุข้อมูลด้านล่างในสคริปต์เพื่อสร้างผู้ใช้ใหม่:
- ตั้ง รหัสผ่าน ในบรรทัด หมายเลข 3
- ตั้งค่า ForceChangePasswordNextSignIn เป็น true หรือ false ในบรรทัด หมายเลข 4
- ตั้งค่า ForceChangePasswordNextSignInWithMfa เป็น true หรือ false ในบรรทัด หมายเลข 5
- สร้าง ชื่อที่แสดง ในบรรทัด หมายเลข 10
- สร้าง MailNickName ในบรรทัด หมายเลข 11
- สร้าง UserPrincipalName ในบรรทัด หมายเลข 12
เรียกใช้สคริปต์ PowerShell ด้านล่าง
# Create password profile
$PasswordProfile = @{
Password = "xWwvJ]6NMw+bWH-d"
ForceChangePasswordNextSignIn = $true
ForceChangePasswordNextSignInWithMfa = $true
}
# Create Azure AD user
$AzureUser = @{
DisplayName = "Carol Stark"
MailNickName = "Carol.Stark"
UserPrincipalName = "Carol.Stark@m365info.com"
PasswordProfile = $PasswordProfile
AccountEnabled = $true
}
New-MgUser @AzureUserมันจะสร้างผู้ใช้ใหม่ด้วยข้อมูลข้างต้นที่คุณให้ไว้
ตั้งรหัสผ่านที่กำหนดไว้ล่วงหน้าสำหรับผู้ใช้ Microsoft 365 คนเดียว
เราต้องการตั้งค่ารหัสผ่านที่กำหนดไว้ล่วงหน้าสำหรับผู้ใช้ Microsoft 365 คนเดียว ในตัวอย่างของเรา เราจะให้รหัสผ่านใหม่แก่ผู้ใช้ Brenda.Smith@m365info.com ผู้ใช้ควรใช้รหัสผ่านที่กำหนดไว้ล่วงหน้าใหม่เพื่อลงชื่อเข้าใช้
หมายเหตุ: เมื่อคุณสร้างรหัสผ่านที่กำหนดไว้ล่วงหน้า ควรเป็นไปตามข้อกำหนดที่ซับซ้อน ไม่เช่นนั้นจะไม่สามารถกำหนดค่าได้
คุณสามารถตัดสินใจได้ว่าผู้ใช้จำเป็นต้องเปลี่ยนรหัสผ่านหรือไม่
หมายเหตุ: ตั้งค่า $ForceChangePasswordNextSignIn เป็น true หากคุณต้องการให้ผู้ใช้เปลี่ยนรหัสผ่านในการลงชื่อเข้าใช้ครั้งถัดไป หากคุณตั้งค่า $ForceChangePasswordNextSignIn เป็น false ผู้ใช้ไม่จำเป็นต้องเปลี่ยนรหัสผ่านที่กำหนด
- เปลี่ยน รหัสผู้ใช้ ในบรรทัด หมายเลข 1
- ตั้งค่า ForceChangePasswordNextSignIn เป็น true หรือ false ในบรรทัด หมายเลข 5
- เปลี่ยนรหัสผ่านในบรรทัด หมายเลข 6
- เรียกใช้สคริปต์ PowerShell ด้านล่าง
$UserId = "Brenda.Smith@m365info.com"
$params = @{
passwordProfile = @{
forceChangePasswordNextSignIn = $false
password = "c*$kJ4!Q2nsQPP"
}
}
Update-MgUser -UserId $userId -BodyParameter $paramsในตัวอย่างของเรา ผู้ใช้ Brenda ต้องใช้รหัสผ่านที่กำหนดไว้ล่วงหน้าแต่ไม่ต้องเปลี่ยนรหัสผ่านในการลงชื่อเข้าใช้ครั้งถัดไป
บังคับให้เปลี่ยนรหัสผ่านสำหรับผู้ใช้ Microsoft 365 คนเดียว
คุณยังสามารถอนุญาตให้ผู้ใช้เปลี่ยนรหัสผ่านในครั้งถัดไปที่ลงชื่อเข้าใช้โดยไม่ต้องตั้งรหัสผ่านที่กำหนดไว้ล่วงหน้า ดังนั้นผู้ใช้สามารถพิมพ์รหัสผ่านปัจจุบันได้ แต่ต้องเปลี่ยนรหัสผ่านใหม่ทันที
เรียกใช้สคริปต์ด้านล่างเพื่อบังคับให้เปลี่ยนรหัสผ่านในครั้งถัดไปที่ผู้ใช้ลงชื่อเข้าใช้
$userId = "Brenda.Smith@m365info.com"
$params = @{
passwordProfile = @{
forceChangePasswordNextSignIn = $true
}
}
Update-MgUser -UserId $userId -BodyParameter $paramsครั้งถัดไปที่ Brenda ลงชื่อเข้าใช้ด้วยรหัสผ่านปัจจุบัน หน้าต่างด้านล่างจะปรากฏขึ้น ผู้ใช้ถูกบังคับให้เปลี่ยนรหัสผ่านใหม่
ตั้งรหัสผ่านที่กำหนดไว้ล่วงหน้าเป็นกลุ่มสำหรับผู้ใช้ Microsoft 365 ทุกคน
เราต้องการตั้งค่ารหัสผ่านที่กำหนดไว้ล่วงหน้าสำหรับผู้ใช้ Microsoft 365 ทุกคน ผู้ใช้ทุกคนจะได้รับรหัสผ่านที่กำหนดไว้ล่วงหน้าเหมือนกัน และจำเป็นต้องใช้รหัสผ่านใหม่เดียวกันในการลงชื่อเข้าใช้
หมายเหตุ: เมื่อคุณสร้างรหัสผ่านที่กำหนดไว้ล่วงหน้า ควรเป็นไปตามข้อกำหนดที่ซับซ้อน ไม่เช่นนั้นจะไม่สามารถกำหนดค่าได้
คุณสามารถตัดสินใจได้ว่าจะบังคับให้ผู้ใช้เปลี่ยนรหัสผ่านหลังจากการลงชื่อเข้าใช้ครั้งถัดไปหรือไม่ หากคุณตั้งค่า $ForceChangePasswordNectSignIn เป็น true ผู้ใช้จะต้องเปลี่ยนรหัสผ่านที่กำหนดไว้ล่วงหน้า .
- เปลี่ยนรหัสผ่านในบรรทัด หมายเลข 5
- ตั้งค่า $ForceChangePasswordNectSignIn เป็น จริง หรือ เท็จ
- เรียกใช้สคริปต์ PowerShell ด้านล่าง
# Retrieve a list of all users
$allUsers = Get-MgUser -All
# Define the new password
$newPassword = "Welcome12!"
# Define force password change after sign in
$ForceChangePasswordNextSignIn = "true" #or "false"
# Loop through each user and update their password
foreach ($user in $allUsers) {
$UserPrincipalName = $user.UserPrincipalName
$DisplayName = $user.DisplayName
try {
Update-MgUser -UserId $UserPrincipalName `
-PasswordProfile @{
password = $newPassword;
ForceChangePasswordNextSignIn = $ForceChangePasswordNextSignIn
} -ErrorAction Stop
Write-Host "Password updated for user: $userPrincipalName" -ForegroundColor Green
}
catch {
Write-Host "Failed to update password for user: $DisplayName ($UserId)" $_.Exception.Message -ForegroundColor Red
}
}ตั้งรหัสผ่านที่กำหนดไว้ล่วงหน้าเหมือนกันสำหรับผู้ใช้ Microsoft 365 จาก CSV
คุณสามารถตั้งค่ารหัสผ่านที่กำหนดไว้ล่วงหน้าเหมือนกันสำหรับผู้ใช้ Microsoft 365 หลายคน แต่จากไฟล์ CSV เราจะแสดงวิธีการส่งออกไฟล์ CSV กับผู้ใช้ทั้งหมด จากนั้น คุณสามารถปรับไฟล์ CSV และเก็บเฉพาะผู้ใช้ที่คุณต้องการตั้งรหัสผ่านที่กำหนดไว้ล่วงหน้าได้
ขั้นตอนที่ 1: ส่งออกบัญชีผู้ใช้ Microsoft 365
ดูไวยากรณ์คำสั่ง PowerShell ด้านล่าง
Get-MgUser -All | Select UserPrincipalName | Export-Csv "path" -NoTypeInformation -Encoding UTF8เรียกใช้ตัวอย่างคำสั่ง PowerShell
Get-MgUser -All | Select UserPrincipalName | Export-Csv "C:\temp\m365users.csv" -NoTypeInformation -Encoding UTF8มันจะส่งออกตัวอย่างไฟล์ CSV ด้านล่างด้วย UserPrincipalName คุณสามารถปรับไฟล์ CSV และลบผู้ใช้ที่คุณไม่ต้องการเปลี่ยนรหัสผ่านได้
ขั้นตอนที่ 2: บันทึกไฟล์ CSV
ตั้งชื่อไฟล์ m365users และบันทึกเป็นไฟล์ CSV ในโฟลเดอร์ temp หากคุณยังไม่มีไฟล์นั้นอยู่ใน ( C:) ขับ
เพื่อให้แน่ใจว่า PowerShell สามารถอ่านไฟล์ได้ ให้เรียกใช้ Import-Csv cmdlet
Import-Csv "C:\temp\m365users.csv"ขั้นตอนที่ 3: ตั้งรหัสผ่านที่กำหนดไว้ล่วงหน้าเหมือนกันในสคริปต์
คุณต้องตั้งรหัสผ่านที่กำหนดไว้ล่วงหน้าเหมือนกันสำหรับผู้ใช้ทั้งหมด และระบุว่าคุณต้องการให้พวกเขาเปลี่ยนรหัสผ่านหรือไม่
- พิมพ์ รหัสผ่าน ในบรรทัด หมายเลข 8
- ตั้งค่า ForceChangePasswordNextSignIn เป็น true หรือ false ในบรรทัด หมายเลข 11
เรียกใช้สคริปต์ PowerShell ด้านล่าง
# Define the path to the CSV file
$csvFilePath = "C:\temp\m365users.csv"
# Load the CSV data into a variable
$csvData = Import-Csv -Path $csvFilePath
# Define the new password
$newPassword = "P@ss8739!7382!"
# Define force password change after sign in
$ForceChangePasswordNextSignIn = "true" #or "false"
# Loop through each user in the CSV data and update their password
foreach ($user in $csvData) {
$userPrincipalName = $user.UserPrincipalName
# Check if the user exists
$existingUser = Get-MgUser -UserId $userPrincipalName -ErrorAction SilentlyContinue
if ($existingUser -ne $null) {
try {
Update-MgUser -UserId $userPrincipalName `
-PasswordProfile @{
password = $newPassword;
ForceChangePasswordNextSignIn = $ForceChangePasswordNextSignIn
} -ErrorAction Stop
Write-Host "Password updated for user: $userPrincipalName" -ForegroundColor Green
}
catch {
Write-Host "Failed to update password for user: $userPrincipalName" $_.Exception.Message -ForegroundColor Red
}
}
else {
Write-Host "User not found: $userPrincipalName" -ForegroundColor Yellow
}
}ตั้งรหัสผ่านที่กำหนดไว้ล่วงหน้าสำหรับผู้ใช้ Microsoft 365 จาก CSV
คุณยังสามารถตั้งค่ารหัสผ่านเฉพาะที่กำหนดไว้ล่วงหน้าสำหรับผู้ใช้ Microsoft 365 แต่ละคนจากไฟล์ CSV ได้ มันจะเปลี่ยนรหัสผ่านสำหรับผู้ใช้เหล่านี้ด้วยรหัสผ่านเฉพาะที่คุณเลือก
สร้างไฟล์ CSV ด้วยรหัสผ่านที่กำหนดไว้ล่วงหน้าสำหรับผู้ใช้แต่ละคน:
- เปิด Microsoft Excel
- พิมพ์ UserPrincipalName ในคอลัมน์แรก
- แสดงรายการชื่อผู้ใช้หลัก
- พิมพ์รหัสผ่านที่ด้านบนของคอลัมน์ที่สอง
- แสดงรายการรหัสผ่านที่ไม่ซ้ำ
- ตั้งชื่อไฟล์ m365usersPass และบันทึกเป็นไฟล์ CSV
- สร้างโฟลเดอร์ชั่วคราวและบันทึกไว้ใน C:\temp
- เพื่อให้แน่ใจว่า PowerShell สามารถอ่านไฟล์ได้ ให้เรียกใช้ Import-Csv cmdlet
Import-Csv "C:\temp\m365usersPass.csv"ก่อนที่คุณจะรันสคริปต์ คุณต้องระบุว่าคุณต้องการให้ผู้ใช้เปลี่ยนรหัสผ่านในการเข้าสู่ระบบครั้งถัดไปหรือไม่
- ตั้งค่า ForceChangePasswordNextSignIn เป็น true หรือ false ในบรรทัด หมายเลข 8
เรียกใช้สคริปต์ PowerShell ด้านล่าง
# Define the path to the CSV file
$csvFilePath = "C:\temp\m365usersPass.csv"
# Load the CSV data into a variable
$csvData = Import-Csv -Path $csvFilePath
# Define force password change after sign in
$ForceChangePasswordNextSignIn = "true" #or "false"
# Loop through each user in the CSV data and update their password
foreach ($user in $csvData) {
$userPrincipalName = $user.UserPrincipalName
$userPassword = $user.Password
# Check if the user exists
$existingUser = Get-MgUser -UserId $userPrincipalName -ErrorAction SilentlyContinue
if ($existingUser -ne $null) {
try {
Update-MgUser -UserId $userPrincipalName `
-PasswordProfile @{
password = $userPassword;
ForceChangePasswordNextSignIn = $ForceChangePasswordNextSignIn
} -ErrorAction Stop
Write-Host "Password updated for user: $userPrincipalName" -ForegroundColor Green
}
catch {
Write-Host "Failed to update password for user: $userPrincipalName" $_.Exception.Message -ForegroundColor Red
}
}
else {
Write-Host "User not found: $userPrincipalName" -ForegroundColor Yellow
}
}6. รหัสผ่านการส่งออกไม่มีวันหมดอายุสำหรับผู้ใช้ Microsoft 365
คุณสามารถตรวจสอบว่ารหัสผ่านถูกตั้งค่าให้ไม่มีวันหมดอายุสำหรับผู้ใช้ Microsoft 365 ในองค์กรของคุณหรือไม่ เราจะแสดงวิธีรับข้อมูลรหัสผ่านสำหรับ:
- ผู้ใช้ Microsoft 365 คนเดียว
- รวมผู้ใช้ Microsoft 365 ทั้งหมดเป็นกลุ่ม
รับรหัสผ่านไม่มีวันหมดอายุสำหรับผู้ใช้ Microsoft 365 คนเดียว
อันดับแรก เราต้องการดูว่ารหัสผ่านถูกตั้งค่าให้ไม่มีวันหมดอายุสำหรับผู้ใช้ Microsoft 365 รายเดียวหรือไม่ เราจำเป็นต้องใช้ Get-MgUser cmdlet กับ UserPrincipalName หรือ ID ผู้ใช้
ดูตัวอย่างไวยากรณ์ PowerShell ด้านล่าง
Get-MgUser -UserId "UPN or user ID" -Property UserPrincipalName, PasswordPolicies | Select-Object UserPrincipalName, @{
N = "PasswordNeverExpires";
E = { $_.PasswordPolicies -contains "DisablePasswordExpiration" }
}เรียกใช้ตัวอย่างคำสั่ง PowerShell
Get-MgUser -UserId "Brenda.Smith@m365info.com" -Property UserPrincipalName, PasswordPolicies | Select-Object UserPrincipalName, @{
N = "PasswordNeverExpires";
E = { $_.PasswordPolicies -contains "DisablePasswordExpiration" }
}ดูตัวอย่างเอาต์พุต PowerShell ด้านล่าง
UserPrincipalName PasswordNeverExpires
----------------- --------------------
Brenda.Smith@m365info.com Falseตัวอย่างข้างต้นแสดงให้เห็นว่ารหัสผ่านไม่มีวันหมดอายุคือ เท็จ (โดยค่าเริ่มต้น) หมายความว่าผู้ใช้ Brenda มีรหัสผ่านที่หมดอายุ
รับรหัสผ่านไม่มีวันหมดอายุสำหรับผู้ใช้ Microsoft 365 ทั้งหมดเป็นกลุ่ม
รับรหัสผ่านข้อมูลไม่มีวันหมดอายุสำหรับผู้ใช้ Microsoft 365 ทั้งหมดในองค์กรของคุณ
เรียกใช้คำสั่ง PowerShell ด้านล่าง
Get-MgUser -All -Property UserPrincipalName, PasswordPolicies | Select-Object UserprincipalName, @{
N = "PasswordNeverExpires";
E = { $_.PasswordPolicies -contains "DisablePasswordExpiration" }
}ดูผลลัพธ์ PowerShell ด้านล่าง
UserPrincipalName PasswordNeverExpires
----------------- --------------------
Adam.Mackay@m365info.com False
Adrian.Mackenzie@m365info.com False
Alan.MacLeod@m365info.com False
Alexander.Manning@m365info.com False
Amanda.Hansen@m365info.com False
Brenda.Smith@m365info.com False
Brian.Mill@m365info.com False
Cameron.Miller@m365info.com False
Carl.Mills@m365info.com False
Carol.Bover@m365info.com False
Caroline.Cameron@m365info.com False
Carolyn.Brown@m365info.com False
Chris.Lucas@m365info.com False
Diana.Baker@m365info.com Falseรหัสผ่านการส่งออกไม่มีวันหมดอายุรายงานเป็น CSV
คุณยังสามารถรวมรหัสผ่านผู้ใช้ Microsoft 365 ทั้งหมดเข้าด้วยกันในการตั้งค่าไม่มีวันหมดอายุเป็นไฟล์ CSV
สร้างโฟลเดอร์ temp ในไดรฟ์ (C:) หากคุณยังไม่มี
เรียกใช้สคริปต์ PowerShell ด้านล่าง
Get-MgUser -All -Property UserPrincipalName, PasswordPolicies |
Select-Object UserPrincipalName, @{
N = "PasswordNeverExpires";
E = { $_.'PasswordPolicies' -contains "DisablePasswordExpiration" }
} |
Export-Csv -Path "C:\temp\PasswordReport.csv" -NoTypeInformation -Encoding UTF8มันจะส่งออกการตั้งค่ารหัสผ่านผู้ใช้ Microsoft 365 ทั้งหมดไม่มีวันหมดอายุ ในตัวอย่างของเรา ผู้ใช้ทุกคนมีค่า FALSE ซึ่งหมายความว่าพวกเขาไม่มีตัวเลือก รหัสผ่านไม่มีวันหมดอายุ
แสดงข้อมูลนโยบายรหัสผ่าน Microsoft 365
ดูไวยากรณ์คำสั่ง PowerShell ด้านล่าง
Get-MgDomain -DomainId "Domain Name" | Ft PasswordNotificationWindowInDays, PasswordValidityPeriodInDaysเรียกใช้ตัวอย่างคำสั่ง PowerShell
Get-MgDomain -DomainId "m365info.com" | Ft PasswordNotificationWindowInDays, PasswordValidityPeriodInDaysผลลัพธ์ PowerShell แสดงตัวอย่างผลลัพธ์ด้านล่าง
PS C:\> Get-MgDomain -DomainId "m365info.com" | Ft PasswordNotificationWindowInDays, PasswordValidityPeriodInDays
PasswordNotificationWindowInDays PasswordValidityPeriodInDays
-------------------------------- ----------------------------
30 180คุณได้เรียนรู้วิธีจัดการรหัสผ่านผู้ใช้ Microsoft 365 ด้วย MS Graph PowerShell
อ่านเพิ่มเติม: ส่งออกรายงานสถานะ MFA ของผู้ใช้ Microsoft 365 ทั้งหมด »
บทสรุป
คุณได้เรียนรู้วิธีจัดการรหัสผ่านผู้ใช้ Microsoft 365 ด้วย PowerShell Microsoft แนะนำให้ตั้งรหัสผ่านให้ไม่มีวันหมดอายุสำหรับทั้งองค์กร ด้วย PowerShell มีการตั้งค่าในการกำหนดค่าสำหรับการตั้งค่ารหัสผ่านมากกว่าในศูนย์การจัดการ Microsoft 365
คุณสนุกกับบทความนี้หรือไม่? คุณอาจต้องการสร้างความลับไคลเอ็นต์ไม่จำกัดใน Microsoft Entra ID อย่าลืมติดตามเราและแบ่งปันบทความนี้





