Computer >> คอมพิวเตอร์ >  >> ระบบ >> Windows Server

การจัดการผู้ใช้ภายในเครื่องและกลุ่มด้วย PowerShell

เมื่อเร็วๆ นี้ 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

การจัดการผู้ใช้ภายในเครื่องและกลุ่มด้วย 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 ของ PowerShell ของโมดูล LocalAccounts บนคอมพิวเตอร์ที่ใช้ Windows 10

จะจัดการผู้ใช้ภายใน Windows ด้วย PowerShell ได้อย่างไร

แสดงรายการผู้ใช้ภายในเครื่องที่มีอยู่ใน Windows:

Get-LocalUser

การจัดการผู้ใช้ภายในเครื่องและกลุ่มด้วย PowerShell

อย่างที่คุณเห็น มีบัญชีผู้ใช้ในเครื่อง 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

การจัดการผู้ใช้ภายในเครื่องและกลุ่มด้วย PowerShell

มาสร้างผู้ใช้ภายในเครื่องใหม่ด้วย 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"

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

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

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

การจัดการผู้ใช้ภายในเครื่องและกลุ่มด้วย PowerShell

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

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

การจัดการผู้ใช้ภายในเครื่องและกลุ่มด้วย PowerShell

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

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

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

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

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

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

การจัดการผู้ใช้ภายในเครื่องและกลุ่มด้วย PowerShell

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

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

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

Get-LocalGroupMember -Group 'RemoteSupport'

อย่างที่คุณเห็น เราใช้เฉพาะบัญชีท้องถิ่น (PrincipalSource – Local) อย่างไรก็ตาม สามารถใช้บัญชีโดเมน (โดเมน) บัญชี 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"