รายชื่อผู้ใช้ 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 หรือจากโดเมนไดเร็กทอรีที่ใช้งานอยู่ และมีประโยชน์สำหรับผู้ดูแลระบบสำหรับงานตรวจสอบและล้างข้อมูล คุณสามารถใช้ตัวกำหนดเวลางานเพื่อส่งอีเมลไปยังผู้ดูแลระบบเพื่อขอรายชื่อบัญชีที่สร้าง หมดอายุ และกำลังจะหมดอายุทุกเดือน






