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

รายชื่อผู้ใช้ PowerShell | จะแสดงรายการผู้ใช้ใน PowerShell ได้อย่างไร (ตัวอย่าง)


คำจำกัดความของรายการผู้ใช้ PowerShell

รายการผู้ใช้ PowerShell เป็นวิธีการดึงข้อมูลผู้ใช้จากเครื่อง Windows ในเครื่องหรือผู้ใช้ Active Directory โดยใช้ cmdlets เฉพาะเช่น Get-LocalUser สำหรับผู้ใช้ภายในเครื่องบน Windows OS และ Get-ADUsers สำหรับผู้ใช้ Active Directory เพื่อดึงข้อมูลรายละเอียดผู้ใช้เช่น Distinguished Name (DN), GUID, Security Identifier (SID), Security Account Manager (SAM) หรือชื่อ และสามารถส่งออกเป็น CSV หรือไฟล์ข้อความได้

ไวยากรณ์

ไวยากรณ์ของรายการผู้ใช้ PowerShell ได้รับด้านล่าง:

ไวยากรณ์ Get-LocalUser:

Get-LocalUser
[[-Name] <String[]>]
[<CommonParameters>]
Get-LocalUser
[[-SID] <SecurityIdentifier[]>]
[<CommonParameters>]

ไวยากรณ์ Get-ADUser:

Get-ADUser
[-AuthType <ADAuthType>]
[-Credential <PSCredential>]
-Filter <String>
[-Properties <String[]>]
[-ResultPageSize <Int32>]
[-ResultSetSize <Int32>]
[-SearchBase <String>]
[-SearchScope <ADSearchScope>]
[-Server <String>]
[<CommonParameters>]
Get-ADUser
[-AuthType <ADAuthType>]
[-Credential <PSCredential>]
[-Identity] <ADUser>
[-Partition <String>]
[-Properties <String[]>]
[-Server <String>]
[<CommonParameters>]
Get-ADUser
[-AuthType <ADAuthType>]
[-Credential <PSCredential>]
-LDAPFilter <String>
[-Properties <String[]>]
[-ResultPageSize <Int32>]
[-ResultSetSize <Int32>]
[-SearchBase <String>]
[-SearchScope <ADSearchScope>]
[-Server <String>]
[<CommonParameters>]

จากไวยากรณ์ Get-ADUser คุณสามารถใช้ชุดชุดค่าผสมใดก็ได้และในทำนองเดียวกันสำหรับบัญชี Get-LocalUser คุณไม่สามารถใช้คุณสมบัติ -Filter และ -Identity ร่วมกันใน Get-ADUser cmdlet และคุณสมบัติ -Name และ -SID ใน Get-LocalUser cmdlet

นอกจากนี้เรายังสามารถใช้คลาส WMI หรือ CIMInstance Win32_UserAccount เพื่อดึงรายละเอียดผู้ใช้ในเครื่องจากคอมพิวเตอร์ในเครื่องหรือคอมพิวเตอร์ระยะไกล นอกจากนี้คำสั่ง “Net User ” ใน cmd ยังมีประโยชน์ในการดึงรายชื่อผู้ใช้ภายในเครื่องอีกด้วย

จะแสดงรายการผู้ใช้ใน PowerShell ได้อย่างไร

มีหลายวิธีในการแสดงรายการผู้ใช้ใน PowerShell โดยใช้คำสั่งดั้งเดิม เช่น Get-LocalUser ซึ่งจะดึงรายละเอียดบัญชีผู้ใช้ภายในเครื่องจากคอมพิวเตอร์ในระบบหรือคอมพิวเตอร์ระยะไกล หรือ Get-ADUser ซึ่งจะดึงข้อมูลผู้ใช้จากโดเมน Active Directory

คำสั่ง Get-LocalUser ถูกนำมาใช้ใน PowerShell 5.1 และเป็นส่วนหนึ่งของโมดูล Microsoft.PowerShell.LocalAccounts ใน PowerShell เวอร์ชันก่อนหน้า หากต้องการดึงรายชื่อผู้ใช้ คุณต้องดาวน์โหลดโมดูลบัญชีในเครื่อง หรือคุณต้องใช้คำสั่ง cmd เช่น Net User (ซึ่งยังคงใช้งานได้) หรือคลาสวิธี WMI Win32_UserAccount

หากคุณกำลังเปลี่ยนจากระยะไกลไปยังเครื่องเวอร์ชัน PowerShell รุ่นเก่า คำสั่ง Get-LocalUser จะไม่ทำงานที่นั่น เมื่อคุณเรียกใช้คำสั่งผู้ใช้ภายในเครื่องบนตัวควบคุมโดเมน คำสั่งดังกล่าวจะมอบผู้ใช้ไดเรกทอรีที่ใช้งานอยู่ให้กับคุณ เนื่องจาก DC ไม่มีผู้ใช้ภายในเครื่อง

ตัวอย่างของรายการผู้ใช้ PowerShell

ต่อไปนี้เป็นตัวอย่างที่ได้รับด้านล่าง:

ตัวอย่าง #1: การรับรายการบัญชีผู้ใช้ภายในโดยใช้ Cmd

เราสามารถใช้คำสั่ง “ผู้ใช้เน็ต ” cmd เพื่อดึงรายชื่อผู้ใช้จาก cmd หรือ PowerShell

net user

เอาต์พุต:

  • หากต้องการรับรายชื่อผู้ใช้ภายในจากคอมพิวเตอร์ระยะไกลให้ใช้ Inrigg-Command ใน PowerShell
Invoke-Command -ComputerName LabMachine2k16 -ScriptBlock { net user}

เอาต์พุต:

ผลลัพธ์ข้างต้นมาจากคอมพิวเตอร์ระยะไกล LabMachine2k16

ตัวอย่างที่ 2: การดึงข้อมูลผู้ใช้ภายในโดยใช้วิธี Wmi

เราสามารถใช้วิธี WMI หรือคลาสวิธีอินสแตนซ์ CIM Win32_UserAccount เพื่อดึงรายชื่อผู้ใช้

gwmi win32_UserAccount | Select Name, FullName, Caption, Domain, SID | ft -AutoSize

เอาต์พุต:

  • หากต้องการรับรายละเอียดผู้ใช้ภายในเครื่องบนคอมพิวเตอร์ระยะไกล คุณต้องเพิ่ม -ชื่อคอมพิวเตอร์
Invoke-Command -ComputerName LabMachine2k16 { gwmi win32_UserAccount} | Select Name, FullName, Caption, Domain, SID | ft -AutoSize

คุณยังสามารถใช้คำสั่ง Get-CimInstance แทนเมธอด gwmi ได้

คุณสามารถส่งออกไฟล์เอาต์พุตเป็นข้อความหรือ CSV ดังที่แสดงด้านล่าง ในตัวอย่างด้านล่าง ผลลัพธ์จะถูกส่งออกไปยังไฟล์ UserAccounts.Csv

gwmi win32_UserAccount | Select Name, FullName, Caption, Domain, SID | Export-Csv C:\Temp\Useracccounts.csv -NoTypeInformation

เพื่อส่งออกเป็นไฟล์ข้อความ

gwmi win32_UserAccount | Select Name, FullName, Caption, Domain, SID | Out-File C:\temp\UserAccounts.txt

หากคุณต้องการตรวจสอบผู้ใช้เฉพาะหรือรายชื่อผู้ใช้โดเมน

gwmi win32_UserAccount | where{$_.Domain -like "LabMachine2k16*"} | Select Name, FullName, Caption, Domain, SID  | ft -AutoSize

เอาต์พุต:

  • หากต้องการดึงข้อมูลบัญชีท้องถิ่นที่มีคุณสมบัติรหัสผ่านเท่านั้นให้ใช้คำสั่งด้านล่าง
gwmi win32_useraccount | where{$_.LocalAccount -eq $true}  | Select Name, LocalAccount, PasswordChangeable, PasswordRequired

ตัวอย่าง #3: การดึงข้อมูลรายการ ADUsers

หากต้องการรับรายชื่อผู้ใช้โดเมน คุณสามารถใช้คำสั่ง Get-ADUser ในการรันคำสั่งนี้ คุณต้องตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง RSAT (Remote Server Administration Tools) บนคอมพิวเตอร์แล้ว

Get-ADUser -Filter *

คำสั่งดังกล่าวจะรับผู้ใช้ทั้งหมดจากโดเมนไดเรกทอรีที่ใช้งานอยู่

  • หากต้องการเปิดเผยคุณสมบัติทั้งหมดของผู้ใช้ คุณสามารถใช้ -คุณสมบัติ
Get-ADUser -Filter * -Properties *
  • หากต้องการกรองคุณสมบัติเฉพาะ
Get-ADUser -Filter * -Properties * | Select Name, DisplayName, SamAccountName, UserPrincipalName

เอาต์พุต:

  • หากต้องการรับรายชื่อผู้ใช้ที่มีบัญชี ปิดใช้งาน และส่งออกเป็นไฟล์ CSV ให้ใช้คำสั่งด้านล่าง
Get-ADUser -Filter * | where {$_.Enabled -eq $false} | Export-Csv C:\DisabledUserAccounts.csv -NoTypeInformation
  • หากต้องการรับรายละเอียดบัญชีผู้ใช้เฉพาะ
Get-ADUser -Identity beta -Properties *

คุณต้องใช้คุณสมบัติ SamAccountName ในพารามิเตอร์ -Identity

  • หากต้องการดึงข้อมูลผู้ใช้จากหน่วยองค์กร (OU) ที่เฉพาะเจาะจง ให้ใช้คำสั่งด้านล่าง
Get-ADUser -Filter * -Properties * | where{$_.DistinguishedName -like "*CN=Users*"} | Select Name, DisplayName, userPrincipalName, SAMAccountName
  • การดึงรายชื่อผู้ใช้ในโดเมนไดเร็กทอรีที่ใช้งานอยู่ซึ่งมีรหัสผ่านหมดอายุหรือตั้งค่าให้ไม่มีวันหมดอายุด้วยคุณสมบัติรหัสผ่านในเอาต์พุต
  • ดึงข้อมูลบัญชีผู้ใช้รหัสผ่านที่หมดอายุ
Get-ADUser -Filter * -Properties * | where{$_.PasswordExpired -eq $true} | Select Name, SAMAccountName, PasswordExpired, PasswordLastSet
  • การดึงรหัสผ่านจะไม่ทำให้บัญชีผู้ใช้หมดอายุ
Get-ADUser -Filter * -Properties * | where{$_.PasswordNeverExpires -eq $true} | Select Name, SAMAccountName, PasswordNeverExpires

บทสรุป

ตามที่อธิบายไว้ในบทความนี้ PowerShell ใช้คำสั่งต่างๆ เพื่อดึงรายชื่อผู้ใช้จากคอมพิวเตอร์ที่ใช้ Windows หรือจากโดเมนไดเร็กทอรีที่ใช้งานอยู่ และมีประโยชน์สำหรับผู้ดูแลระบบสำหรับงานตรวจสอบและล้างข้อมูล คุณสามารถใช้ตัวกำหนดเวลางานเพื่อส่งอีเมลไปยังผู้ดูแลระบบเพื่อขอรายชื่อบัญชีที่สร้าง หมดอายุ และกำลังจะหมดอายุทุกเดือน

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