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

วิธีสร้าง เปลี่ยนแปลง และลบผู้ใช้หรือกลุ่มภายในเครื่องด้วย PowerShell


คุณสามารถใช้โมดูล PowerShell ในตัว Microsoft.PowerShell.LocalAccounts เพื่อจัดการผู้ใช้และกลุ่มภายในเครื่องใน Windows โมดูลนี้อนุญาตให้คุณสร้างหรือลบผู้ใช้ภายในเครื่องและกลุ่มความปลอดภัย และเพิ่มหรือลบผู้ใช้ออกจากกลุ่ม โมดูลนี้มีอยู่ใน Windows Server 2016 และ Windows 10 และเวอร์ชันที่ใหม่กว่า โมดูลนี้ได้รับการติดตั้งพร้อมกับ Windows Management Framework 5.1 ใน Windows เวอร์ชันก่อนหน้า เมื่อคุณอัปเกรดเวอร์ชัน PowerShell ของคุณ

มี 15 cmdlets ในโมดูล LocalAccounts คุณสามารถแสดงรายการทั้งหมดของ cmdlet ของโมดูลดังต่อไปนี้:

Get-Command -Module Microsoft.PowerShell.LocalAccounts

  • Add-LocalGroupMember

    - เพิ่มผู้ใช้ลงในกลุ่มความปลอดภัยในเครื่อง

  • Disable-LocalUser

    - ปิดใช้งานบัญชีผู้ใช้ภายในเครื่อง

  • Enable-LocalUser

    - เปิดใช้งานบัญชีผู้ใช้ภายใน;

  • Get-LocalGroup

    - รับข้อมูลเกี่ยวกับกลุ่มท้องถิ่น

  • Get-LocalGroupMember

    - ดูรายชื่อผู้ใช้ในกลุ่มท้องถิ่น

  • Get-LocalUser

    - แสดงข้อมูลเกี่ยวกับผู้ใช้ในพื้นที่

  • New-LocalGroup

    - สร้างกลุ่มท้องถิ่นใหม่

  • New-LocalUser

    - สร้างผู้ใช้ภายในเครื่อง

  • Remove-LocalGroup

    - ลบกลุ่มในเครื่อง;

  • Remove-LocalGroupMember

    - ลบสมาชิกออกจากกลุ่มท้องถิ่น

  • Remove-LocalUser

    - ลบผู้ใช้ภายใน;

  • Rename-LocalGroup

    - เปลี่ยนชื่อกลุ่มท้องถิ่น

  • Rename-LocalUser

    - เปลี่ยนชื่อผู้ใช้;

  • Set-LocalGroup

    - เปลี่ยนการตั้งค่ากลุ่ม;

  • Set-LocalUser

    - เปลี่ยนการตั้งค่าผู้ใช้

มาดูงานทั่วไปสำหรับการจัดการผู้ใช้และกลุ่มภายในเครื่องบนคอมพิวเตอร์ Windows โดยใช้ PowerShell cmdlets จากโมดูล LocalAccounts

ก่อนหน้านี้ Local Users and Groups Management MMC แบบกราฟิกสแน็ปอิน (

lusrmgr.msc

) )

net user

และ

net localgroup

คำสั่งมักใช้ในการจัดการผู้ใช้และกลุ่มภายใน Windows

สร้างผู้ใช้ภายในเครื่องใหม่ด้วย PowerShell

ใช้ New-LocalUser cmdlet เพื่อสร้างบัญชีผู้ใช้ภายในเครื่องใหม่ใน Windows อย่างรวดเร็ว:

New-LocalUser -Name "TestUser1" -FullName "Test User" -Description "User for tests"

ระบุรหัสผ่านสำหรับผู้ใช้ใหม่:

ความยาวและความซับซ้อนของรหัสผ่านของผู้ใช้ต้องเป็นไปตามนโยบายรหัสผ่านภายในเครื่องและโดเมน (หากคอมพิวเตอร์เชื่อมต่อกับโดเมน Active Directory)

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

$pass = ConvertTo-SecureString "WOS_hubP@ss2023!" -AsPlainText -Force
New-LocalUser -Name TestUser2 -Password $password

หากต้องการเพิ่มผู้ใช้ลงในกลุ่มผู้ดูแลระบบภายใน ให้รันคำสั่ง:

Add-LocalGroupMember -Group Administrators -Member TestUser2

คุณสามารถแสดงรายชื่อผู้ใช้ภายใน Windows บนหน้าจอเข้าสู่ระบบ

คุณยังสามารถใช้ตัวเลือกต่อไปนี้เมื่อสร้างบัญชีผู้ใช้ Windows ภายใน:

  • -AccountExpires

    - กำหนดวันหมดอายุของบัญชี หลังจากนั้นบัญชีจะถูกปิดใช้งานโดยอัตโนมัติ (โดยค่าเริ่มต้น New-LocalUser จะสร้างบัญชีที่ไม่มีวันหมดอายุ)

  • -AccountNeverExpires
  • -Disabled

    - ปิดการใช้งานบัญชีหลังจากสร้าง;

  • -PasswordNeverExpires

    - ตั้งรหัสผ่านของผู้ใช้ให้ไม่มีวันหมดอายุ

  • -UserMayNotChangePassword

    - ผู้ใช้ไม่สามารถเปลี่ยนรหัสผ่านบัญชีได้

ใช้ cmdlet ADUser ใหม่เพื่อสร้างผู้ใช้ใหม่ในโดเมน Active Directory

การจัดการบัญชีผู้ใช้ภายในเครื่องใน Windows ผ่าน PowerShell

หากต้องการแสดงรายการผู้ใช้ Windows ภายในเครื่องทั้งหมดบนคอมพิวเตอร์เครื่องปัจจุบัน ให้รัน:

Get-LocalUser

อย่างที่คุณเห็น มีบัญชีในเครื่อง 6 บัญชีในคอมพิวเตอร์ 4 บัญชีถูกปิดใช้งาน (เปิดใช้งาน=เท็จ) รวมถึงผู้ดูแลระบบ Windows ในตัว

หากต้องการแสดงคุณสมบัติทั้งหมดของบัญชีภายในเครื่อง (คล้ายกับ Get-ADUSer cmdlet ที่ใช้แสดงข้อมูลเกี่ยวกับผู้ใช้โดเมน AD) ให้เรียกใช้คำสั่งนี้:

Get-LocalUser -Name root | Select-Object *
AccountExpires :
Description :
Enabled : True
FullName :
PasswordChangeableDate : 3/12/2019 10:14:29 PM
PasswordExpires :
UserMayChangePassword : True
PasswordRequired : False
PasswordLastSet : 3/11/2019 10:14:29 PM
LastLogon : 3/11/2019 4:18:17 PM
Name : root
SID : S-1-5-21-2605456602-2293283241-3832290805-1001
PrincipalSource : Local
ObjectClass : User

ดูแอตทริบิวต์ PrincipalSource ประกอบด้วยประเภทของบัญชีผู้ใช้ มันอาจจะเป็น:

  • ผู้ใช้ Windows ภายใน (PrincipalSource: Local)

  • บัญชี Microsoft (แหล่งที่มาหลัก: บัญชี Microsoft)

  • ผู้ใช้ Azure AD (แหล่งที่มาหลัก: AzureAD)

วิธีรับค่าแอตทริบิวต์ของผู้ใช้เฉพาะ เช่น วันที่เปลี่ยนรหัสผ่านครั้งล่าสุด:

Get-LocalUser -Name root | Select-Object PasswordLastSet

ในการเปลี่ยน (รีเซ็ต) รหัสผ่านของผู้ใช้ ให้ใช้คำสั่ง (เราคิดว่าคุณได้แปลงรหัสผ่านใหม่เป็น SecureString แล้ว):

Set-LocalUser -Name john -Password $UserPassword -Verbose

คุณสามารถใช้นโยบาย Windows Local Administrator Password Solution (LAPS) เพื่อจัดการและเปลี่ยนรหัสผ่านของผู้ดูแลระบบภายในบนคอมพิวเตอร์ทุกเครื่องในโดเมนโดยอัตโนมัติ

หากต้องการตั้งค่าสถานะ "รหัสผ่านไม่มีวันหมดอายุ" สำหรับผู้ใช้ ให้ใช้คำสั่ง:

Set-LocalUser -Name john -PasswordNeverExpires $False

อย่างที่คุณเห็น คุณไม่จำเป็นต้องแปลงค่า UserAccountControl เช่นเดียวกับการจัดการคุณสมบัติบัญชีผู้ใช้ใน AD

ปิดการใช้งานบัญชีท้องถิ่น:

Disable-LocalUser -Name john

เปิดใช้งานผู้ใช้ท้องถิ่น:

Enable-LocalUser -Name john

หากต้องการลบผู้ใช้ภายใน:

Remove-LocalUser -Name john -Verbose

จะสร้างและจัดการกลุ่มท้องถิ่นโดยใช้ PowerShell ได้อย่างไร

คุณสามารถแสดงรายการกลุ่มโลคัลบนอุปกรณ์ Windows ของคุณโดยใช้คำสั่ง:

Get-LocalGroup

มาสร้างกลุ่มท้องถิ่นใหม่กันเถอะ:

New-LocalGroup -Name RemoteSupport -Description 'Remote Support Group'

ตอนนี้มาเพิ่มบัญชีท้องถิ่นสองสามบัญชีและกลุ่มผู้ดูแลระบบท้องถิ่นลงในกลุ่มใหม่:

Add-LocalGroupMember -Group 'RemoteSupport' -Member ('john','root','Administrators') -Verbose

เคล็ดลับ วิธีสร้าง ลบ หรือเพิ่มผู้ใช้ในกลุ่มโดเมน AD ได้อธิบายไว้ในโพสต์ การจัดการกลุ่ม Active Directory โดยใช้ PowerShell

คุณยังสามารถเพิ่มผู้ใช้ลงในกลุ่มโดยใช้ไปป์ไลน์ต่อไปนี้ (ในตัวอย่างนี้ เราจะเพิ่มผู้ใช้ลงในกลุ่มภายในที่อนุญาตให้เข้าถึงเดสก์ท็อปของคอมพิวเตอร์จากระยะไกลผ่าน RDP):

Get-Localuser -Name TestUser2 | Add-LocalGroupMember -Group 'Remote Desktop Users'

แสดงรายชื่อผู้ใช้ในกลุ่มท้องถิ่น:

Get-LocalGroupMember -Group 'RemoteSupport'

หากคอมพิวเตอร์ของคุณเข้าร่วมกับโดเมน AD คุณสามารถเพิ่มบัญชีโดเมนและกลุ่มลงในกลุ่มท้องถิ่นของคุณได้ ใช้ไวยากรณ์ต่อไปนี้: DomainName\jonhl หรือ DomainName\’domain admins’

คุณสามารถเพิ่มได้ไม่เพียงแค่บัญชีภายในเครื่อง (PrincipalSource - Local) เท่านั้น แต่ยังสามารถเพิ่มบัญชีโดเมน (Domain), บัญชี Microsoft (MicrosoftAccount) และบัญชี Azure (AzureAD) ลงในกลุ่มภายในได้ด้วย

ใช้ไวยากรณ์ต่อไปนี้เพื่อเพิ่มผู้ใช้ Microsoft หรือ AzureAD ลงในกลุ่มท้องถิ่น:

Add-LocalGroupMember -Group 'RemoteSupport' -Member ('MicrosoftAccount\a-d@outlook.com','AzureAD\admin@a-d.site') -Verbose

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


$user='john'
foreach ($LocalGroup in Get-LocalGroup)
{
if (Get-LocalGroupMember $LocalGroup -Member $user -ErrorAction SilentlyContinue)
{
$LocalGroup.Name
}
}

หากต้องการลบผู้ใช้ออกจากกลุ่ม ให้ดำเนินการคำสั่ง:

Remove-LocalGroupMember -Group 'RemoteSupport' -Member john

ในการจัดการผู้ใช้ภายในเครื่องบนคอมพิวเตอร์ระยะไกล คุณสามารถเชื่อมต่อกับคอมพิวเตอร์ผ่าน WinRM โดยใช้ Invoke-Command หรือ Enter-PSSession cmdlets

ตัวอย่างเช่น คุณอาจต้องการรับรายการบัญชีในกลุ่มโลคัลบนคอมพิวเตอร์ระยะไกล:

$winrm_ssn = new-pssession -computer Lon-Srv01,Lon-Srv02,Lon-Srv03
invoke-command -scriptblock {Get-LocalGroupMember -Group 'RemoteSupport'} -session $winrm_ssn -hidecomputername | select * -exclude RunspaceID | out-gridview -title "LocalAdmins"

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