Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> ระบบ >> Windows Server

การจัดการผู้ใช้และกลุ่มท้องถิ่นด้วย PowerShell

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

โมดูล PowerShell LocalAccounts

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

Get-Command -Module Microsoft.PowerShell.LocalAccounts

การจัดการผู้ใช้และกลุ่มท้องถิ่นด้วย PowerShell

  1. Add-LocalGroupMember – เพิ่มผู้ใช้เข้ากลุ่มท้องถิ่น;
  2. Disable-LocalUser – ปิดใช้งานบัญชีผู้ใช้ท้องถิ่น;
  3. Enable-LocalUser – เปิดใช้งาน (ปลดล็อก) บัญชี;
  4. Get-LocalGroup – ดูข้อมูลเกี่ยวกับกลุ่มท้องถิ่น;
  5. Get-LocalGroupMember – แสดงรายการผู้ใช้ในกลุ่มท้องถิ่น;
  6. Get-LocalUser – แสดงข้อมูลเกี่ยวกับผู้ใช้ท้องถิ่น;
  7. New-LocalGroup – สร้างกลุ่มท้องถิ่นใหม่;
  8. New-LocalUser – สร้างผู้ใช้ท้องถิ่น;
  9. Remove-LocalGroup – ลบกลุ่มท้องถิ่น;
  10. Remove-LocalGroupMember – ลบสมาชิกออกจากกลุ่มท้องถิ่น;
  11. Remove-LocalUser – ลบผู้ใช้ท้องถิ่น;
  12. Rename-LocalGroup – เปลี่ยนชื่อกลุ่มท้องถิ่น;
  13. Rename-LocalUser – เปลี่ยนชื่อผู้ใช้;
  14. Set-LocalGroup – แก้ไขการตั้งค่ากลุ่ม;
  15. Set-LocalUser – แก้ไขการตั้งค่าผู้ใช้.

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

วิธีจัดการผู้ใช้ท้องถิ่นของ Windows ด้วย PowerShell

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

Get-LocalUser

การจัดการผู้ใช้และกลุ่มท้องถิ่นด้วย PowerShell

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

เพื่อแสดงคุณสมบัติทั้งหมดของบัญชีท้องถิ่น (คล้ายกับ cmdlet Get-ADUser ที่ใช้แสดงข้อมูลเกี่ยวกับผู้ใช้โดเมน 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

การจัดการผู้ใช้และกลุ่มท้องถิ่นด้วย PowerShell

มาสร้างผู้ใช้ท้องถิ่นใหม่ด้วย cmdlet New-LocalUser cmdlet นี้ช่วยให้คุณสร้างประเภทบัญชีต่อไปนี้:

  • บัญชีท้องถิ่นของ Windows;
  • บัญชี Microsoft;
  • บัญชี Azure AD.

เมื่อสร้างบัญชีผู้ใช้ด้วย cmdlet New-LocalUser คุณไม่สามารถระบุรหัสผ่านผู้ใช้เป็นข้อความธรรมดาในอาร์กิวเมนต์ Password ได้ คุณต้องขอรหัสผ่านแบบโต้ตอบและแปลงเป็น secure string ล่วงหน้า:

$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"

หากต้องการสร้างผู้ใช้ในโดเมน AD ให้ใช้ cmdlet New-ADUser

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

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

การจัดการผู้ใช้และกลุ่มท้องถิ่นด้วย PowerShell

เพื่อตั้งค่าแฟล็ก "Password never expires" ให้รันคำสั่งนี้:

Set-LocalUser -Name john –PasswordNeverExpires $False

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

ตามที่คุณจำได้ คุณสามารถล็อกอิน Windows 10 โดยใช้บัญชี Microsoft ของคุณ หากคุณต้องการสร้างการเข้าสู่ระบบผู้ใช้ใหม่ไปยังบัญชี Microsoft ให้รันคำสั่งนี้ (โปรดทราบว่าคุณไม่จำเป็นต้องระบุรหัสผ่านบัญชี เนื่องจากจัดเก็บไว้ที่ Microsoft)

New-LocalUser -Name "MicrosoftAccount\woshub@outlook.com" -Description "This is a Microsoft account"

เพื่อสร้างบัญชีท้องถิ่นที่เกี่ยวข้องกับบัญชี Azure AD ของคุณ (เช่น คุณใช้ Office 365) ให้รันคำสั่งต่อไปนี้:

New-LocalUser -Name "AzureAD\admin@woshub.com" -Description " This is an Azure AD account"

เพื่อลบผู้ใช้ท้องถิ่น:

Remove-LocalUser -Name john -Verbose

วิธีจัดการกลุ่มท้องถิ่นของ Windows โดยใช้ PowerShell

ตอนนี้แสดงรายการกลุ่มท้องถิ่นบนคอมพิวเตอร์ของคุณ:

Get-LocalGroup

การจัดการผู้ใช้และกลุ่มท้องถิ่นด้วย PowerShell

สร้างกลุ่มใหม่:

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

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

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

เคล็ดลับ. วิธีการสร้าง ลบ หรือเพิ่มผู้ใช้เข้ากลุ่มโดเมน AD สามารถหาได้ในบทความ Managing Active Directory Groups Using PowerShell

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

การจัดการผู้ใช้และกลุ่มท้องถิ่นด้วย PowerShell

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

Get-Localuser -Name john | Add-LocalGroupMember -Group 'Administrators'

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

Get-LocalGroupMember -Group 'RemoteSupport'

ตามที่คุณเห็น เราใช้บัญชีท้องถิ่นเท่านั้น (PrincipalSource – Local) อย่างไรก็ตาม บัญชีโดเมน (domain), บัญชี Microsoft (MicrosoftAccount) หรือบัญชี Azure (AzureAD) ก็สามารถใช้ได้เช่นกัน

การจัดการผู้ใช้และกลุ่มท้องถิ่นด้วย PowerShell

เพื่อแสดงรายการกลุ่มที่ผู้ใช้เฉพาะเป็นสมาชิก คุณจะต้องตรวจสอบทุกกลุ่มท้องถิ่นบนคอมพิวเตอร์:

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"