เมื่อเร็วๆ นี้ Microsoft ได้เพิ่มโมดูล PowerShell มาตรฐานเพื่อจัดการผู้ใช้ภายใน Windows และกลุ่มที่เรียกว่า Microsoft.PowerShell.LocalAccounts . ก่อนหน้านี้ คุณต้องดาวน์โหลดและนำเข้าโมดูลนี้ไปยัง PowerShell ด้วยตนเอง ขณะนี้โมดูล LocalAccounts พร้อมใช้งานตามค่าเริ่มต้นใน Windows Server 2016 และ Windows 10 โดยเป็นส่วนหนึ่งของ PowerShell 5.1 หากต้องการใช้ใน Windows เวอร์ชันก่อนหน้า คุณต้องติดตั้ง Windows Management Framework 5.1
LocalAccounts โมดูล 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
– แก้ไขการตั้งค่าผู้ใช้
ลองพิจารณางานทั่วไปบางอย่างเพื่อจัดการผู้ใช้หรือกลุ่มในเครื่องโดยใช้ cmdlet ของ PowerShell ของโมดูล LocalAccounts บนคอมพิวเตอร์ที่ใช้ Windows 10
จะจัดการผู้ใช้ภายใน Windows ด้วย PowerShell ได้อย่างไร
แสดงรายการผู้ใช้ภายในเครื่องที่มีอยู่ใน Windows:
Get-LocalUser
อย่างที่คุณเห็น มีบัญชีผู้ใช้ในเครื่อง 6 บัญชีบนคอมพิวเตอร์ และ 4 บัญชีถูกปิดใช้งาน (เปิดใช้งาน=เท็จ)
หากต้องการแสดงคุณสมบัติทั้งหมดของบัญชีท้องถิ่น (คล้ายกับ 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
หากต้องการรับแอตทริบิวต์เฉพาะของผู้ใช้ เช่น วันที่เปลี่ยนรหัสผ่านล่าสุด ให้เรียกใช้คำสั่งนี้:
Get-LocalUser -Name root | Select-Object PasswordLastSet
มาสร้างผู้ใช้ภายในเครื่องใหม่ด้วย New-LocalUser cmdlet cmdlet นี้ช่วยให้คุณสร้างบัญชีประเภทต่อไปนี้:
- บัญชีในเครื่องของ Windows
- บัญชี Microsoft
- บัญชี Azure AD
เมื่อสร้างบัญชีผู้ใช้ด้วย New-LocalUser cmdlet คุณไม่สามารถระบุรหัสผ่านของผู้ใช้เป็นข้อความธรรมดาเป็นอาร์กิวเมนต์รหัสผ่านได้ คุณต้องขอรหัสผ่านแบบโต้ตอบและแปลงเป็นสตริงที่ปลอดภัยล่วงหน้า:
$UserPassword = Read-Host –AsSecureString
หรือระบุรหัสผ่านโดยตรงในคอนโซล PoSh:
$UserPassword = ConvertTo-SecureString "H1PH0Ppa$$" -AsPlainText -Force
New-LocalUser John -Password $UserPassword -FullName "Johh Lennon" -Description "Local Account for Remote Access"
ในการเปลี่ยนรหัสผ่านของผู้ใช้ ให้ใช้ LocalUser cmdlet (เราคิดว่าคุณได้แปลงรหัสผ่านใหม่เป็น SecureString แล้ว):
Set-LocalUser -Name john -Password $UserPassword –Verbose
หากต้องการตั้งค่าสถานะ “รหัสผ่านไม่มีวันหมดอายุ” ให้เรียกใช้คำสั่งนี้:
Set-LocalUser -Name john –PasswordNeverExpires $False
อย่างที่คุณเห็น คุณไม่จำเป็นต้องแปลงค่า UserAccountControl เหมือนเมื่อจัดการคุณสมบัติของวัตถุผู้ใช้ AD
ตามที่คุณจำได้ คุณสามารถเข้าสู่ระบบ Windows 10 โดยใช้บัญชี Microsoft ของคุณ หากคุณต้องสร้างการเข้าสู่ระบบผู้ใช้ใหม่ในบัญชี Microsoft ให้เรียกใช้คำสั่งนี้ (โปรดทราบว่าคุณไม่จำเป็นต้องระบุรหัสผ่านของบัญชี เนื่องจากรหัสผ่านถูกจัดเก็บไว้ใน Microsoft)
New-LocalUser -Name "MicrosoftAccount\[email protected]" -Description "This is a Microsoft account"
ในการสร้างบัญชีท้องถิ่นที่เกี่ยวข้องกับบัญชี Azure AD ของคุณ (เช่น คุณกำลังใช้ Office 365) ให้เรียกใช้คำสั่งต่อไปนี้:
New-LocalUser -Name "AzureAD\[email protected]" -Description " This is an Azure AD account"
ในการลบผู้ใช้ในเครื่อง:
Remove-LocalUser -Name john -Verbose
จะจัดการ Windows Local Groups โดยใช้ PowerShell ได้อย่างไร
ตอนนี้แสดงรายการกลุ่มท้องถิ่นบนคอมพิวเตอร์ของคุณ:
Get-LocalGroup
สร้างกลุ่มใหม่:
New-LocalGroup -Name RemoteSupport -Description 'Remote Support Group'
เพิ่มบัญชีท้องถิ่นและกลุ่มผู้ดูแลระบบท้องถิ่นในกลุ่มใหม่:
Add-LocalGroupMember -Group 'RemoteSupport' -Member ('john','root','Administrators') -Verbose
ถ้าคอมพิวเตอร์ของคุณเข้าร่วมโดเมน AD คุณสามารถเพิ่มบัญชีโดเมนและกลุ่มในกลุ่มภายในเครื่องของคุณ โดยระบุในรูปแบบต่อไปนี้:DomainName\jonhl หรือ DomainName\’domain admins’
คุณยังสามารถเพิ่มผู้ใช้ในกลุ่มโดยใช้ไปป์ไลน์ต่อไปนี้ (เราจะเพิ่มผู้ใช้ในกลุ่มผู้ดูแลระบบภายใน):
Get-Localuser -Name john | Add-LocalGroupMember -Group 'Administrators'
แสดงรายการผู้ใช้ในกลุ่มท้องถิ่น:
Get-LocalGroupMember -Group 'RemoteSupport'
อย่างที่คุณเห็น เราใช้เฉพาะบัญชีท้องถิ่น (PrincipalSource – Local) อย่างไรก็ตาม สามารถใช้บัญชีโดเมน (โดเมน) บัญชี Microsoft (MicrosoftAccount) หรือบัญชี Azure (AzureAD) ได้
หากต้องการแสดงรายการกลุ่ม ผู้ใช้รายใดรายหนึ่งเป็นสมาชิก คุณจะต้องตรวจสอบทุกกลุ่มในเครื่อง:
foreach ($LocalGroup in Get-LocalGroup)
{
if (Get-LocalGroupMember $LocalGroup -Member john –ErrorAction SilentlyContinue)
{
$LocalGroup.Name
}
}
หากต้องการลบผู้ใช้ออกจากกลุ่ม ให้รันคำสั่งนี้:
Remove-LocalGroupMember -Group 'RemoteSupport' –Member john
ในการจัดการผู้ใช้ภายในเครื่องบนคอมพิวเตอร์ระยะไกล ให้เชื่อมต่อโดยใช้ WinRM และใช้ cmdlet ของ Invoke-Command หรือ Enter-PSSession
ตัวอย่างเช่น คุณต้องสร้างรายการบัญชีในกลุ่มท้องถิ่นบนคอมพิวเตอร์ระยะไกล:
$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"