สแนปอินภาพ Active Directory Users and Computer (ADUC) ไม่ใช่เครื่องมือเพียงอย่างเดียวสำหรับจัดการกลุ่มความปลอดภัยใน Active Directory คุณสามารถใช้คำสั่ง PowerShell เรียบง่ายสำหรับการจัดการกลุ่มผู้ใช้ประจำวันในโดเมน Active Directory ของคุณ ในบทความนี้ เราจะดูวิธีใช้ PowerShell เพื่อสร้างกลุ่มใหม่ใน AD เพิ่มผู้ใช้เข้าไป (หรือลบ) แสดง/ส่งออกรายการผู้ใช้กลุ่ม และคำสั่งที่มีประโยชน์อื่นๆ ที่มักใช้เมื่อบริหารกลุ่ม AD
ในการจัดการกลุ่ม AD คุณสามารถใช้ Active Directory Module for Windows PowerShell โมดูล RSAT-AD-PowerShell พร้อมใช้งานในทุกเวอร์ชันของ Windows Server (เริ่มจาก Windows Server 2008R2) และสามารถติดตั้งเป็นคุณสมบัติ RSAT บนเดสก์ท็อป Windows 10 และ Windows 11
ตรวจสอบว่าโมดูล AD โหลดเข้าสู่เซสชัน PowerShell ปัจจุบันแล้วหรือไม่:
Get-Module -Listavailable
ตามที่คุณเห็น โมดูล ActiveDirectory ถูกโหลด หากไม่ได้ ให้นำเข้าโดยใช้คำสั่งนี้:
Import-Module ActiveDirectory
มาแสดงรายการคำสั่ง PowerShell cmdlet ที่อนุญาตให้คุณจัดการกลุ่ม AD:
Get-Command -Module ActiveDirectory -Name "*Group*"
มี cmdlet ทั้งหมด 11 ตัว:
- Add-ADGroupMember
- Add-ADPrincipalGroupMembership
- Get-ADAccountAuthorizationGroup
- Get-ADGroup
- Get-ADGroupMember
- Get-ADPrincipalGroupMembership
- New-ADGroup
- Remove-ADGroup
- Remove-ADGroupMember
- Remove-ADPrincipalGroupMembership
- Set-ADGroup
New-ADGroup: การสร้างกลุ่ม AD ใหม่ด้วย PowerShell
สร้างกลุ่มความปลอดภัยใหม่ในคอนเทนเนอร์ Active Directory ที่ระบุ (OU) โดยใช้คำสั่ง New-ADGroup:
New-ADGroup "TestADGroup" -path 'OU=Groups,OU=NY,OU=US,DC=corp,dc=woshub,DC=com' -GroupScope Global -PassThru –Verbose
คุณสามารถใช้แอตทริบิวต์ Description และ DisplayName เพื่อระบุคำอธิบายและชื่อแสดงของกลุ่ม
คุณสามารถใช้พารามิเตอร์ GroupScope เพื่อตั้งค่าประเภทกลุ่มหนึ่งในต่อไปนี้:
- 0 = DomainLocal
- 1 = Global
- 2 = Universal
คุณสามารถสร้างกลุ่มการแจกจ่ายได้ดังนี้:
New-ADGroup "TestADGroup-Distr" -path 'OU=Groups,OU=NY,OU=US,DC=corp,dc=woshub,DC=com' -GroupCategory Distribution -GroupScope Global -PassThru –Verbose
กลุ่มการแจกจ่ายสามารถใช้สำหรับส่งอีเมลและ/หรือมอบสิทธิ์ AD เรียนรู้เพิ่มเติมเกี่ยวกับกลุ่มการแจกจ่าย Exchange ที่นี่
เมื่อสร้างกลุ่ม AD คุณสามารถเติมคุณสมบัติใดๆ ได้ วิธีที่ง่ายที่สุดในการตั้งค่าค่าของแอตทริบิวต์กลุ่มต่างๆ คือผ่าน hashtable:
$attrs = @{"mail"="mundmins@woshub.com";"displayname"="ALL Munich Admins"}
New-ADGroup -Name MUNAdmins -GroupScope Global -OtherAttributes $attrs
การเพิ่มผู้ใช้เข้ากลุ่ม Active Directory ผ่าน Add-AdGroupMember
คุณสามารถเพิ่มผู้ใช้เข้ากลุ่ม Active Directory โดยใช้คำสั่ง Add-AdGroupMember มาเพิ่มผู้ใช้สองคนเข้ากลุ่มใหม่:
Add-AdGroupMember -Identity TestADGroup -Members user1, user2
หากคุณต้องการเพิ่มผู้ใช้จำนวนมากเข้ากลุ่มพร้อมกัน คุณสามารถบันทึกรายชื่อผู้ใช้ลงในไฟล์ CSV จากนั้นนำเข้าไฟล์นี้เข้าสู่ PowerShell และเพิ่มผู้ใช้แต่ละคนเข้ากลุ่มโดยใช้สคริปต์ PowerShell เรียบง่าย
รูปแบบของไฟล์ CSV ควรเป็นดังนี้ (ผู้ใช้ต้องแสดงรายการทีละคนในแถวด้วย users เป็นส่วนหัวคอลัมน์)
Import-CSV .\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}
เพื่อรับสมาชิกทั้งหมดของกลุ่ม (groupX) และเพิ่มพวกเขาเข้ากลุ่มอื่น (groupY) ให้ใช้คำสั่งนี้:
Get-ADGroupMember “GroupX” | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “Group-Y” -Members $_}
หากคุณต้องการคัดลอกสมาชิกของกลุ่ม巢ทั้งหมดไปยังกลุ่มใหม่ (แบบทดลอง) ให้รันคำสั่งนี้:
Get-ADGroupMember -Identity “GroupX” -Recursive | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “GroupY” -Members $_}
ในบทความก่อนหน้า เราแสดงสคริปต์ PowerShell ที่ช่วยให้คุณคัดลอกการเป็นสมาชิกกลุ่ม AD จากผู้ใช้หนึ่งและเพิ่มอีกคนหนึ่งเข้ารายการกลุ่มเดียวกัน
คุณสามารถใช้ฟีเจอร์การเป็นสมาชิกกลุ่มชั่วคราว (time-based) ใน Active Directory ด้วย Windows2016Forest schema และใหม่กว่า เพื่อเพิ่มผู้ใช้เข้ากลุ่ม AD ชั่วคราว (เช่น 1 ชั่วโมง) ให้รันคำสั่ง:
$ttl = New-TimeSpan -Minutes 60
Add-ADGroupMember -Identity "Domain Admins" -Members j.lennon -MemberTimeToLive $ttl
หลังจากหนึ่งชั่วโมง ผู้ใช้นี้จะถูกลบออกจากกลุ่มความปลอดภัยนี้โดยอัตโนมัติ
Remove-ADGroupMember: การลบผู้ใช้ออกจากกลุ่ม AD ด้วย PowerShell
เพื่อลบผู้ใช้ออกจากกลุ่ม AD ให้ใช้คำสั่ง Remove-ADGroupMember มาลบผู้ใช้สองคนออกจากกลุ่ม:
Remove-ADGroupMember -Identity TestADGroup -Members user1, user2
ยืนยันการลบผู้ใช้
หากคุณต้องการลบผู้ใช้ออกจากกลุ่มตามรายการผู้ใช้จากไฟล์ CSV ให้ใช้คำสั่งนี้:
Import-CSV .\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity ‘TestADGroup’ -members $_.users}
คุณไม่สามารถใช้กลุ่มผู้ใช้แบบไดนามิกใน Active Directory ภายในองค์กรได้ (ไม่เหมือน Azure AD) อย่างไรก็ตาม คุณสามารถสร้างสคริปต์ PowerShell ที่กำหนดเวลาซึ่งจะเพิ่มหรือลบผู้ใช้ออกจากกลุ่มโดยอัตโนมัติโดยใช้คำสั่ง Add-ADGroupMember และ Remove-ADGroupMember เรียนรู้เพิ่มเติมเกี่ยวกับวิธีสร้างกลุ่มผู้ใช้แบบไดนามิกใน Active Directory ด้วย PowerShell
ค้นหากลุ่ม Active Directory ด้วย Get-ADGroup
คำสั่ง Get-ADGroup จะช่วยให้คุณได้ข้อมูลเกี่ยวกับกลุ่มโดเมน AD:
Get-ADGroup 'TestADGroup'
คำสั่งนี้แสดงข้อมูลเกี่ยวกับแอตทริบิวต์หลักของกลุ่ม (DN, ประเภทกลุ่ม, ชื่อ, SID) เพื่อแสดงค่าของแอตทริบิวต์กลุ่มทั้งหมด ให้รันคำสั่งต่อไปนี้:
Get-ADGroup 'TestADGroup' -properties *
ตามที่คุณเห็น แอตทริบิวต์อย่าง เวลาสร้างและแก้ไขกลุ่ม คำอธิบาย ฯลฯ ตอนนี้แสดงออกมา
คุณสามารถใช้คำสั่ง Get-ADGroup เพื่อค้นหากลุ่มใน AD ตามรูปแบบ ตัวอย่างเช่น คำสั่งต่อไปนี้สามารถใช้ค้นหากลุ่ม AD ทั้งหมดที่มีวลี admins ในชื่อ:
Get-ADGroup -LDAPFilter “(name=*admins*)” | Format-Table
หรือ:
Get-ADGroup -Filter {name -like "*admins*"} -Properties Description,info | Select Name,samaccountname,Description,info
โดยใช้ Get-ADGroup คุณสามารถรับรายการสมาชิกกลุ่ม (เก็บในแอตทริบิวต์ members):
Get-ADGroup -Identity "Domain Admins" -Properties members | Select-Object -ExpandProperty members
อย่างไรก็ตาม การใช้คำสั่ง Get-ADGroupMember เพื่อรับข้อมูลการเป็นสมาชิกกลุ่มสะดวกกว่ามาก
Get-ADGroupMember: วิธีรับและส่งออกสมาชิกกลุ่ม Active Directory
คำสั่ง Get-ADGroupMember ช่วยให้คุณได้สมาชิกของกลุ่ม AD ซึ่งอาจเป็นผู้ใช้, คอมพิวเตอร์, กลุ่มอื่นๆ หรือบัญชีบริการที่จัดการ (MSA/gMSA)
Get-ADGroupMember 'TestADGroup'
เพื่อแสดงเฉพาะชื่อผู้ใช้ในผลลัพธ์ ให้รัน:
Get-ADGroupMember 'TestADGroup'| ft name
หากกลุ่มนี้รวมกลุ่มโดเมนอื่นๆ ให้ใช้พารามิเตอร์ Recursive เพื่อแสดงรายการสมาชิกเต็มรูปแบบรวมถึงกลุ่ม巢ทั้งหมด
Get-ADGroupMember ADadmins -recursive| ft name
เพื่อส่งออกรายการบัญชีที่เป็นสมาชิกของกลุ่มเฉพาะไปยังไฟล์ CSV (สำหรับใช้ต่อใน Excel) ให้รันคำสั่งต่อไปนี้:
Get-ADGroupMember 'ADadmins' -recursive| ft samaccountname| Out-File c:\PS\ADadminsList.csv
คุณสามารถส่งออกข้อมูลเกี่ยวกับผู้ใช้ในกลุ่มไปยังไฟล์ข้อความ คำสั่ง Get-ADUser ใช้เพื่อรับแอตทริบิวต์ที่ขยายของผู้ใช้ ตัวอย่างเช่น นอกจากชื่อบัญชีแล้ว คุณสามารถแสดง UserPrincipalName, ตำแหน่ง และเบอร์โทรศัพท์ของผู้ใช้ในกลุ่ม:
Get-ADGroupMember -Identity ADadmins -recursive| foreach { Get-ADUser $_ -properties title, OfficePhone|Select-Object title, OfficePhone }
คุณสามารถนับจำนวนผู้ใช้ในกลุ่มได้เช่นนี้:
(Get-ADGroupMember -Identity 'domain admins').Count
เพื่อรับรายการกลุ่มว่างใน OU เฉพาะ ให้ใช้คำสั่งนี้:
Get-ADGroup -Filter * -Properties Members -searchbase “OU=NY,OU-US,DC=corp,dc=woshub,DC=com” | where {-not $_.members} | select Name
คำสั่ง Get-ADGroupMember สามารถใช้สร้างสคริปต์ PowerShell เรียบง่ายที่แจ้งเตือนผู้ดูแลระบบว่ามีการเพิ่มผู้ใช้ใหม่เข้ากลุ่ม AD เฉพาะ
Set-ADGroup: การแก้ไขแอตทริบิวต์กลุ่ม Active Directory
คำสั่ง Set-ADGroup ช่วยให้คุณเปลี่ยนคุณสมบัติ (แอตทริบิวต์) ของกลุ่ม Active Directory ใดๆ ได้ ตัวอย่างเช่น คุณสามารถเปลี่ยนคำอธิบายและชื่อของกลุ่ม:
Set-ADGroup -Identity MunAdmins -Description “Munich Admins Group”
หรือ:
Get-ADGroup -Identity MunAdmins | Set-ADGroup -Description “Munich Admins Group”
ซ่อนกลุ่มเฉพาะจาก Exchange GAL:
Set-ADGroup –id MunAdmins -replace @{hideDLMembership=$true}
คุณสามารถเปลี่ยนแอตทริบิวต์กลุ่มหลายอย่างพร้อมกันได้ สะดวกที่จะตั้งค่ารายการการเปลี่ยนแปลงโดยใช้ HashTable:
$attrs = @{"mail"="munadmins@woshub.com";"displayname"="ALL MUN Admins"}
Set-ADGroup -Identity MunAdmins –Add $attrs
คุณสามารถรับรายการแอตทริบิวต์กลุ่ม AD ด้วย get-adgroup munadmins -Properties * หรือจากแท็บ Attributes Editor ในคอนโซล ADUC
Remove-ADGroup: วิธีลบกลุ่มใน Active Directory โดยใช้ PowerShell
เพื่อลบกลุ่มใน Active Directory ให้ใช้คำสั่ง Remove-ADGroup:
Remove-ADGroup -Identity MunSales
เมื่อลบกลุ่ม คุณจะถูกแจ้งให้ยืนยันการลบ เพื่อปิดใช้งานการยืนยันการลบ ให้เพิ่มสวิตช์ Confirm:
Remove-ADGroup -Identity MunSales –Confirm:$false
กลุ่มที่ถูกลบ (และออบเจ็กต์ AD อื่นๆ) สามารถกู้คืนจาก Active Directory Recycle Bin:
Get-ADObject -Filter {Deleted -eq $True -and ObjectClass -eq 'group' -and Name -like '*MunSales*' } –IncludeDeletedObjects| Restore-ADObject –verbose