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

จัดการรหัสผ่านผู้ใช้ 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 ให้ทำตามขั้นตอนเหล่านี้:

  1. ลงชื่อเข้าใช้ศูนย์การจัดการ Microsoft 365
  2. ขยาย การตั้งค่า และคลิก การตั้งค่าองค์กร
  3. คลิกแท็บ ความปลอดภัยและความเป็นส่วนตัว
  4. เลือก นโยบายการหมดอายุของรหัสผ่าน จากรายการ
  5. เลือกช่องทำเครื่องหมาย ตั้งรหัสผ่านให้ไม่มีวันหมดอายุ (แนะนำ)
  6. คลิกบันทึก

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

ตั้งค่านโยบายการหมดอายุของรหัสผ่านให้ไม่มีวันหมดอายุด้วย PowerShell

คุณสามารถตั้งรหัสผ่านให้ไม่มีวันหมดอายุสำหรับทั้งโดเมนได้

เรียกใช้คำสั่ง PowerShell ด้านล่าง

Update-MgDomain -DomainId "m365info.com" -PasswordValidityPeriodInDays "2147483647"

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

2. กำหนดนโยบายการหมดอายุของรหัสผ่านให้หมดอายุสำหรับโดเมน

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

  • วันแจ้งรหัสผ่าน
  • วันหมดอายุของรหัสผ่าน

ตั้งค่านโยบายการหมดอายุของรหัสผ่านให้หมดอายุในศูนย์การจัดการ Microsoft 365

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

  1. ลงชื่อเข้าใช้ศูนย์การจัดการ Microsoft 365
  2. ขยาย การตั้งค่า และคลิก การตั้งค่าองค์กร
  3. คลิกแท็บ ความปลอดภัยและความเป็นส่วนตัว
  4. เลือก นโยบายการหมดอายุของรหัสผ่าน จากรายการ
  5. ล้างช่องทำเครื่องหมาย ตั้งรหัสผ่านให้ไม่มีวันหมดอายุ (แนะนำ)
  6. พิมพ์ตัวเลขระหว่าง 14 ถึง 730 วัน
  7. คลิกบันทึก

ตั้งรหัสผ่านให้หมดอายุสำหรับโดเมน 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. ตั้งรหัสผ่านให้ไม่มีวันหมดอายุสำหรับผู้ใช้

เราจะแสดงวิธีการตั้งค่า รหัสผ่านให้ไม่มีวันหมดอายุ สำหรับ:

  1. ผู้ใช้ Microsoft 365 คนเดียวที่มี PowerShell
  2. รวมกลุ่มผู้ใช้ 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 ทั้งหมด

  1. ผู้ใช้ Microsoft 365 คนเดียวที่มี PowerShell
  2. รวมกลุ่มผู้ใช้ 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 ใหม่ด้วยรหัสผ่านที่กำหนดไว้ล่วงหน้า

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

ระบุข้อมูลด้านล่างในสคริปต์เพื่อสร้างผู้ใช้ใหม่:

  1. ตั้ง รหัสผ่าน ในบรรทัด หมายเลข 3
  2. ตั้งค่า ForceChangePasswordNextSignIn เป็น true หรือ false ในบรรทัด หมายเลข 4
  3. ตั้งค่า ForceChangePasswordNextSignInWithMfa เป็น true หรือ false ในบรรทัด หมายเลข 5
  4. สร้าง ชื่อที่แสดง ในบรรทัด หมายเลข 10
  5. สร้าง MailNickName ในบรรทัด หมายเลข 11
  6. สร้าง 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. เปลี่ยน รหัสผู้ใช้ ในบรรทัด หมายเลข 1
  2. ตั้งค่า ForceChangePasswordNextSignIn เป็น true หรือ false ในบรรทัด หมายเลข 5
  3. เปลี่ยนรหัสผ่านในบรรทัด หมายเลข 6
  4. เรียกใช้สคริปต์ 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 ผู้ใช้จะต้องเปลี่ยนรหัสผ่านที่กำหนดไว้ล่วงหน้า .

  1. เปลี่ยนรหัสผ่านในบรรทัด หมายเลข 5
  2. ตั้งค่า $ForceChangePasswordNectSignIn เป็น จริง หรือ เท็จ
  3. เรียกใช้สคริปต์ 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: ตั้งรหัสผ่านที่กำหนดไว้ล่วงหน้าเหมือนกันในสคริปต์

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

  1. พิมพ์ รหัสผ่าน ในบรรทัด หมายเลข 8
  2. ตั้งค่า 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 ด้วยรหัสผ่านที่กำหนดไว้ล่วงหน้าสำหรับผู้ใช้แต่ละคน:

  1. เปิด Microsoft Excel
  2. พิมพ์ UserPrincipalName ในคอลัมน์แรก
  3. แสดงรายการชื่อผู้ใช้หลัก
  4. พิมพ์รหัสผ่านที่ด้านบนของคอลัมน์ที่สอง
  5. แสดงรายการรหัสผ่านที่ไม่ซ้ำ

  1. ตั้งชื่อไฟล์ m365usersPass และบันทึกเป็นไฟล์ CSV
  2. สร้างโฟลเดอร์ชั่วคราวและบันทึกไว้ใน C:\temp
  3. เพื่อให้แน่ใจว่า PowerShell สามารถอ่านไฟล์ได้ ให้เรียกใช้ Import-Csv cmdlet
Import-Csv "C:\temp\m365usersPass.csv"

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

  1. ตั้งค่า 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 อย่าลืมติดตามเราและแบ่งปันบทความนี้

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