Snap-in đồ họa Active Directory Users and Computer (ADUC) không phải là công cụ duy nhất để quản lý nhóm bảo mật trong Active Directory. Bạn có thể dùng lệnh PowerShell đơn giản cho quản lý hàng ngày nhóm user trong domain AD. Trong bài viết này, chúng ta sẽ xem cách dùng PowerShell để tạo nhóm mới trong AD, thêm user vào nó (hoặc xóa), hiển thị/xuất danh sách user nhóm, và các lệnh hữu ích khác thường dùng khi quản trị nhóm AD.
Để quản lý nhóm AD, bạn có thể dùng Active Directory Module for Windows PowerShell. Module RSAT-AD-PowerShell có sẵn trong tất cả phiên bản Windows Server (bắt đầu từ Windows Server 2008R2), và có thể cài như tính năng RSAT trên Windows 10 và 11 desktop.
Kiểm tra xem module AD đã load vào phiên PowerShell hiện tại chưa:
Get-Module -Listavailable
Như bạn thấy, module ActiveDirectory đã load. Nếu chưa, nhập nó bằng lệnh:
Import-Module ActiveDirectory
Hãy liệt kê cmdlet PowerShell cho phép quản lý nhóm AD:
Get-Command -Module ActiveDirectory -Name "*Group*"
Có 11 cmdlet có sẵn:

- Add-ADGroupMember
- Add-ADPrincipalGroupMembership
- Get-ADAccountAuthorizationGroup
- Get-ADGroup
- Get-ADGroupMember
- Get-ADPrincipalGroupMembership
- New-ADGroup
- Remove-ADGroup
- Remove-ADGroupMember
- Remove-ADPrincipalGroupMembership
- Set-ADGroup
New-ADGroup: Tạo Nhóm AD Mới với PowerShell
Tạo nhóm bảo mật mới trong container Active Directory (OU) được chỉ định dùng lệnh New-ADGroup :
New-ADGroup "TestADGroup" -path 'OU=Groups,OU=NY,OU=US,DC=corp,dc=woshub,DC=com' -GroupScope Global -PassThru –Verbose
Bạn có thể dùng thuộc tính Description và DisplayName để chỉ định mô tả và tên hiển thị nhóm.

Bạn có thể dùng tham số GroupScope để đặt một trong các loại nhóm sau:
- 0 = DomainLocal
- 1 = Global
- 2 = Universal
Bạn có thể tạo nhóm phân phối như sau:
New-ADGroup "TestADGroup-Distr" -path 'OU=Groups,OU=NY,OU=US,DC=corp,dc=woshub,DC=com' -GroupCategory Distribution -GroupScope Global -PassThru –Verbose
Khi tạo nhóm AD, bạn có thể điền bất kỳ thuộc tính nào. Cách dễ nhất đặt giá trị các thuộc tính nhóm là qua hashtable:
$attrs = @{"mail"="mundmins@woshub.com";"displayname"="ALL Munich Admins"}
New-ADGroup -Name MUNAdmins -GroupScope Global -OtherAttributes $attrs
Thêm User vào Active Directory qua Add-AdGroupMember
Bạn có thể thêm user vào nhóm Active Directory dùng cmdlet Add-AdGroupMember. Hãy thêm hai user vào nhóm mới:
Add-AdGroupMember -Identity TestADGroup -Members user1, user2

Nếu cần thêm số lượng lớn user vào nhóm cùng lúc, bạn có thể lưu danh sách username vào file CSV, rồi nhập file này vào PowerShell và thêm từng user vào nhóm bằng script PowerShell đơn giản.
Định dạng file CSV nên như sau (user phải liệt kê từng dòng với users làm header cột).
Import-CSV .\users.csv -Header users | ForEach-Object {Add-AdGroupMember -Identity ‘TestADGroup’ -members $_.users}
Để lấy tất cả thành viên nhóm (groupX) và thêm vào nhóm khác (groupY), dùng lệnh:
Get-ADGroupMember “GroupX” | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “Group-Y” -Members $_}
Nếu cần sao chép thành viên tất cả nhóm lồng nhau vào nhóm mới (đệ quy), chạy lệnh:
Get-ADGroupMember -Identity “GroupX” -Recursive | Get-ADUser | ForEach-Object {Add-ADGroupMember -Identity “GroupY” -Members $_}
Bạn có thể dùng tính năng thành viên nhóm dựa trên thời gian (time-based) trong Active Directory với schema Windows2016Forest và mới hơn. Để tạm thời thêm user vào nhóm AD (ví dụ, 1 giờ), chạy lệnh:
$ttl = New-TimeSpan -Minutes 60
Add-ADGroupMember -Identity "Domain Admins" -Members j.lennon -MemberTimeToLive $ttl
Sau một giờ, user này sẽ tự động bị xóa khỏi nhóm bảo mật này.
Remove-ADGroupMember: Xóa User khỏi Nhóm AD với PowerShell
Để xóa user khỏi nhóm AD, dùng cmdlet Remove-ADGroupMember. Hãy xóa hai user khỏi nhóm:
Remove-ADGroupMember -Identity TestADGroup -Members user1, user2
Xác nhận xóa user:

Nếu phải xóa user khỏi nhóm theo danh sách user từ file CSV, dùng lệnh:
Import-CSV .\users.csv -Header users | ForEach-Object {Remove-ADGroupMember -Identity ‘TestADGroup’ -members $_.users}
Add-ADGroupMember và Remove-ADGroupMember. Tìm hiểu thêm về cách tạo nhóm user động trong Active Directory với PowerShell. Tìm Nhóm Active Directory với Get-ADGroup
Cmdlet Get-ADGroup giúp bạn lấy thông tin về nhóm domain AD:
Get-ADGroup 'TestADGroup'
Lệnh này hiển thị thông tin về thuộc tính chính của nhóm (DN, loại nhóm, tên, SID). Để hiển thị giá trị tất cả thuộc tính nhóm, chạy lệnh:
Get-ADGroup 'TestADGroup' -properties *

Như bạn thấy, các thuộc tính như thời gian tạo và sửa đổi nhóm, mô tả, v.v., bây giờ hiển thị.
Bạn có thể dùng Get-ADGroup để tìm nhóm trong AD theo mẫu. Ví dụ, các lệnh sau dùng để tìm tất cả nhóm AD chứa cụm từ admins trong tên:
Get-ADGroup -LDAPFilter “(name=*admins*)” | Format-Table
Hoặc:
Get-ADGroup -Filter {name -like "*admins*"} -Properties Description,info | Select Name,samaccountname,Description,info
Dùng Get-ADGroup, bạn có thể lấy danh sách thành viên nhóm (lưu trong thuộc tính members):
Get-ADGroup -Identity "Domain Admins" -Properties members | Select-Object -ExpandProperty members
Tuy nhiên, dùng cmdlet Get-ADGroupMember thuận tiện hơn để lấy thành viên nhóm.
Get-ADGroupMember: Lấy và Xuất Thành viên Nhóm Active Directory?
Cmdlet Get-ADGroupMember cho phép lấy thành viên nhóm AD. Chúng có thể là user, máy tính, nhóm khác, hoặc managed service accounts (MSA/gMSA).
Get-ADGroupMember 'TestADGroup'
Để chỉ hiển thị username trong kết quả, chạy:
Get-ADGroupMember 'TestADGroup'| ft name

Nếu nhóm này bao gồm nhóm domain khác, dùng tham số Recursive để hiển thị danh sách đầy đủ thành viên kể cả nhóm lồng nhau.
Get-ADGroupMember ADadmins -recursive| ft name
Để xuất danh sách tài khoản là thành viên nhóm cụ thể ra file CSV (dùng tiếp trong Excel), chạy lệnh:
Get-ADGroupMember 'ADadmins' -recursive| ft samaccountname| Out-File c:\PS\ADadminsList.csv
Bạn có thể xuất thông tin user trong nhóm ra file văn bản. Cmdlet Get-ADUser dùng để lấy thuộc tính mở rộng của user. Ví dụ, ngoài tên tài khoản, bạn có thể hiển thị UserPrincipalName, chức vụ, và số điện thoại của user nhóm:
Get-ADGroupMember -Identity ADadmins -recursive| foreach { Get-ADUser $_ -properties title, OfficePhone|Select-Object title, OfficePhone }
Bạn có thể đếm số user trong nhóm như sau:
(Get-ADGroupMember -Identity 'domain admins').Count

Để lấy danh sách nhóm rỗng trong OU cụ thể, dùng lệnh:
Get-ADGroup -Filter * -Properties Members -searchbase “OU=NY,OU-US,DC=corp,dc=woshub,DC=com” | where {-not $_.members} | select Name
Cmdlet Get-ADGroupMember có thể dùng để tạo script PowerShell đơn giản thông báo cho administrator rằng ai đó đã thêm user mới vào nhóm AD cụ thể.
Set-ADGroup: Sửa đổi Thuộc tính Nhóm Active Director
Cmdlet Set-ADGroup cho phép thay đổi thuộc tính của bất kỳ nhóm Active Directory nào. Ví dụ, bạn có thể thay đổi mô tả và tên nhóm:
Set-ADGroup -Identity MunAdmins -Description “Munich Admins Group”
Hoặc:
Get-ADGroup -Identity MunAdmins | Set-ADGroup -Description “Munich Admins Group”
Ẩn nhóm cụ thể khỏi Exchange GAL:
Set-ADGroup –id MunAdmins -replace @{hideDLMembership=$true}
Bạn có thể thay đổi nhiều thuộc tính nhóm cùng lúc. Tiện lợi đặt danh sách thay đổi bằng HashTable:
$attrs = @{"mail"="munadmins@woshub.com";"displayname"="ALL MUN Admins"}
Set-ADGroup -Identity MunAdmins –Add $attrs

get-adgroup munadmins -Properties * hoặc từ tab Attributes Editor trong console ADUC. Remove-ADGroup: Cách Xóa Nhóm trong Active Directory bằng PowerShell?
Để xóa nhóm trong Active Directory, dùng cmdlet Remove-ADGroup:
Remove-ADGroup -Identity MunSales

Khi xóa nhóm, bạn được nhắc xác nhận xóa. Để tắt xác nhận, thêm switch Confirm:
Remove-ADGroup -Identity MunSales –Confirm:$false
Get-ADObject -Filter {Deleted -eq $True -and ObjectClass -eq 'group' -and Name -like '*MunSales*' } –IncludeDeletedObjects| Restore-ADObject –verbose