วิธีสร้าง เปลี่ยนแปลง และลบผู้ใช้หรือกลุ่มภายในเครื่องด้วย 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.LocalAccountsAdd-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"






