📘 مرجع کامل دستورات Active Directory و Group Policy
اگر مدیر شبکه ویندوز، ادمین دامنه یا کارشناس Microsoft باشید، آشنایی با دستورات Active Directory یکی از مهمترین مهارتهای موردنیاز شماست. در این مقاله تمامی دستورات PowerShell و ابزارهای مدیریتی Active Directory و Group Policy همراه با مثالهای کاربردی، توضیح پارامترها، نکات امنیتی و بهترین روشهای استفاده معرفی میشوند.
👤 دستورات مدیریت کاربران Active Directory
بیشترین دستورات Active Directory مربوط به مدیریت کاربران دامنه است. این دستورات از ماژول ActiveDirectory در PowerShell استفاده میکنند.
🔹 Get-ADUser
دستور Get-ADUser برای مشاهده اطلاعات کاربران Active Directory استفاده میشود.
Syntax
Get-ADUser Get-ADUser -Identity USERNAME Get-ADUser -Filter *
پارامترهای مهم
| پارامتر | توضیح |
|---|---|
| -Identity | نمایش یک کاربر مشخص |
| -Filter | فیلتر کاربران |
| -SearchBase | جستجو در OU خاص |
| -Properties | نمایش ویژگیهای بیشتر |
نمونهها
Get-ADUser Ali
نمایش اطلاعات کاربر Ali
Get-ADUser -Filter *
نمایش تمام کاربران دامنه
Get-ADUser -Filter * -Properties *
نمایش تمام خصوصیات کاربران
💡 نکته
استفاده از
-Properties *
در محیطهای بزرگ باعث افزایش زمان اجرا میشود.
New-ADUser -Name "Ali Ahmadi"
نمونه حرفهای
New-ADUser ` -Name "Ali Ahmadi" ` -GivenName Ali ` -Surname Ahmadi ` -SamAccountName a.ahmadi ` -UserPrincipalName a.ahmadi@company.local ` -Enabled $true ` -AccountPassword (ConvertTo-SecureString "P@ssw0rd123" -AsPlainText -Force)
⚠ هشدار
پسورد را هرگز به صورت PlainText در اسکریپتهای عملیاتی ذخیره نکنید.
Set-ADUser Ali -Department IT
نمونه تغییر ایمیل
Set-ADUser Ali -EmailAddress ali@company.com
نمونه تغییر شماره تلفن
Set-ADUser Ali -OfficePhone "021123456"
Remove-ADUser Ali
هشدار امنیتی
قبل از حذف کاربران، از Active Directory Backup تهیه کنید.
Unlock-ADAccount Ali
Search-ADAccount -LockedOut
Search-ADAccount -AccountDisabled
Search-ADAccount -PasswordExpired
👥 دستورات مدیریت گروههای Active Directory (Active Directory Group Commands)
مدیریت گروهها (Groups) یکی از مهمترین وظایف مدیران Active Directory است. گروهها برای اعمال سطوح دسترسی، مدیریت مجوزها، اشتراکگذاری منابع، اعمال Group Policy و کنترل امنیت کاربران استفاده میشوند. PowerShell امکان ایجاد، حذف، ویرایش و مدیریت اعضای گروهها را تنها با چند دستور فراهم میکند.
اگر به دنبال آموزش کامل دستورات مدیریت گروه در اکتیودایرکتوری هستید، در ادامه تمامی Cmdletهای مهم Active Directory Module همراه با مثالهای کاربردی معرفی شدهاند.
📂 Get-ADGroup
دستور Get-ADGroup برای مشاهده اطلاعات گروههای موجود در Active Directory استفاده میشود.
Syntax
Get-ADGroup Get-ADGroup -Identity GroupName Get-ADGroup -Filter *
پارامترهای مهم
| پارامتر | توضیح |
|---|---|
| -Identity | نمایش اطلاعات یک گروه مشخص |
| -Filter | جستجوی گروهها |
| -SearchBase | جستجو در OU مشخص |
| -Properties | نمایش تمامی ویژگیهای گروه |
نمونهها
Get-ADGroup "Domain Admins"
Get-ADGroup -Filter *
Get-ADGroup -Filter * -Properties *
➕ New-ADGroup
برای ایجاد گروه جدید در Active Directory استفاده میشود.
New-ADGroup -Name "IT"
ایجاد Security Group
New-ADGroup ` -Name "IT" ` -GroupScope Global ` -GroupCategory Security ` -Path "OU=Groups,DC=company,DC=local"
پارامترهای مهم
| پارامتر | کاربرد |
|---|---|
| GroupScope | Global / Universal / DomainLocal |
| GroupCategory | Security یا Distribution |
| Path | محل ایجاد گروه |
✏ Set-ADGroup
برای تغییر تنظیمات گروهها استفاده میشود.
Set-ADGroup IT -Description "IT Department"
تغییر توضیحات گروه
Set-ADGroup IT ` -Description "Information Technology Department"
❌ Remove-ADGroup
برای حذف گروه از اکتیودایرکتوری استفاده میشود.
Remove-ADGroup IT
👤 Add-ADGroupMember
برای افزودن کاربر یا گروه به یک گروه امنیتی استفاده میشود.
Add-ADGroupMember IT Ali
افزودن چند عضو
Add-ADGroupMember ` -Identity IT ` -Members Ali,Reza,Ahmad
🚪 Remove-ADGroupMember
حذف اعضای گروه بدون حذف خود کاربر.
Remove-ADGroupMember IT Ali
حذف چند عضو
Remove-ADGroupMember ` -Identity IT ` -Members Ali,Reza
📋 Get-ADGroupMember
نمایش اعضای یک گروه امنیتی.
Get-ADGroupMember IT
نمایش فقط کاربران
Get-ADGroupMember IT | Where-Object objectClass -eq user
خروجی به فایل CSV
Get-ADGroupMember IT | Export-Csv C:\Groups.csv -NoTypeInformation
🔍 Get-ADPrincipalGroupMembership
نمایش تمام گروههایی که یک کاربر عضو آنها است.
Get-ADPrincipalGroupMembership Ali
مرتبسازی خروجی
Get-ADPrincipalGroupMembership Ali | Sort Name
📦 Move-ADObject
انتقال گروه به OU دیگر.
Move-ADObject ` -Identity "CN=IT,OU=Groups,DC=company,DC=local" ` -TargetPath "OU=Security Groups,DC=company,DC=local"
📊 خلاصه دستورات مدیریت گروهها
| دستور | کاربرد |
|---|---|
| Get-ADGroup | نمایش گروهها |
| New-ADGroup | ایجاد گروه |
| Set-ADGroup | ویرایش گروه |
| Remove-ADGroup | حذف گروه |
| Add-ADGroupMember | افزودن عضو |
| Remove-ADGroupMember | حذف عضو |
| Get-ADGroupMember | نمایش اعضا |
| Get-ADPrincipalGroupMembership | نمایش گروههای کاربر |
| Move-ADObject | انتقال گروه به OU دیگر |
🏢 دستورات مدیریت OU در Active Directory (Organizational Unit Commands)
Organizational Unit یا OU یکی از مهمترین اجزای Active Directory است که برای دستهبندی کاربران، کامپیوترها، گروهها و سایر اشیای دامنه استفاده میشود. ساختار صحیح OU مدیریت کاربران، اعمال Group Policy، Delegation و امنیت شبکه را سادهتر میکند. در این بخش مهمترین دستورات PowerShell برای مدیریت OU همراه با مثالهای عملی ارائه شده است.
قبل از اجرای دستورات این بخش، ماژول ActiveDirectory باید بارگذاری شده باشد.
Import-Module ActiveDirectory
📂 Get-ADOrganizationalUnit
دستور Get-ADOrganizationalUnit برای نمایش اطلاعات OUهای موجود در دامنه استفاده میشود.
Syntax
Get-ADOrganizationalUnit Get-ADOrganizationalUnit -Identity OUName Get-ADOrganizationalUnit -Filter *
مثالها
Get-ADOrganizationalUnit -Filter *
نمایش تمام OUها
Get-ADOrganizationalUnit -Filter * | Select Name,DistinguishedName
نمایش نام و مسیر OUها
➕ New-ADOrganizationalUnit
برای ایجاد OU جدید در Active Directory استفاده میشود.
New-ADOrganizationalUnit -Name "IT"
ایجاد OU در مسیر مشخص
New-ADOrganizationalUnit ` -Name "Accounting" ` -Path "DC=company,DC=local"
ایجاد OU محافظتشده
New-ADOrganizationalUnit ` -Name "HR" ` -ProtectedFromAccidentalDeletion $true
همیشه OUهای اصلی را با گزینه
ProtectedFromAccidentalDeletion
ایجاد کنید تا از حذف تصادفی جلوگیری شود.
✏ Set-ADOrganizationalUnit
برای تغییر ویژگیهای OU استفاده میشود.
Set-ADOrganizationalUnit ` -Identity "OU=IT,DC=company,DC=local" ` -Description "IT Department"
فعال کردن محافظت از حذف
Set-ADOrganizationalUnit ` -Identity "OU=IT,DC=company,DC=local" ` -ProtectedFromAccidentalDeletion $true
📝 Rename-ADObject
برای تغییر نام OU و سایر اشیای Active Directory استفاده میشود.
Rename-ADObject ` -Identity "OU=IT,DC=company,DC=local" ` -NewName "Information Technology"
📦 Move-ADObject
انتقال OU یا سایر اشیای اکتیودایرکتوری به مسیر جدید.
Move-ADObject ` -Identity "OU=HR,DC=company,DC=local" ` -TargetPath "OU=Departments,DC=company,DC=local"
انتقال کاربر به OU جدید
Move-ADObject ` -Identity "CN=Ali Ahmadi,OU=Users,DC=company,DC=local" ` -TargetPath "OU=IT,DC=company,DC=local"
❌ Remove-ADOrganizationalUnit
حذف OU از اکتیودایرکتوری.
Remove-ADOrganizationalUnit ` -Identity "OU=Temp,DC=company,DC=local"
اگر گزینه
ProtectedFromAccidentalDeletion
فعال باشد، ابتدا باید آن را غیرفعال کنید.
غیرفعال کردن محافظت از حذف
Set-ADOrganizationalUnit ` -Identity "OU=Temp,DC=company,DC=local" ` -ProtectedFromAccidentalDeletion $false
🔍 جستجوی OU بر اساس نام
Get-ADOrganizationalUnit ` -Filter 'Name -like "*IT*"'
جستجو در مسیر مشخص
Get-ADOrganizationalUnit ` -SearchBase "OU=Departments,DC=company,DC=local" ` -Filter *
📊 ایجاد چند OU به صورت خودکار
نمونه اسکریپت برای ایجاد چندین OU با استفاده از آرایه در PowerShell.
$OUs = @(
"IT",
"HR",
"Finance",
"Sales",
"Support"
)
foreach($OU in $OUs){
New-ADOrganizationalUnit `
-Name $OU `
-Path "DC=company,DC=local"
}
📋 جدول خلاصه دستورات OU
| دستور | کاربرد |
|---|---|
| Get-ADOrganizationalUnit | نمایش OUها |
| New-ADOrganizationalUnit | ایجاد OU |
| Set-ADOrganizationalUnit | ویرایش OU |
| Rename-ADObject | تغییر نام OU |
| Move-ADObject | انتقال OU یا Object |
| Remove-ADOrganizationalUnit | حذف OU |
⭐ بهترین روشهای مدیریت OU
- ساختار OU را بر اساس واحدهای سازمانی یا موقعیت جغرافیایی طراحی کنید.
- از ایجاد OUهای تودرتوی غیرضروری خودداری کنید.
- برای OUهای اصلی قابلیت Protected From Accidental Deletion را فعال نگه دارید.
- اعمال Group Policy را تا حد امکان روی OUها انجام دهید، نه روی Domain Root.
- نامگذاری OUها را استاندارد و یکنواخت انتخاب کنید تا مدیریت و جستجو سادهتر شود.
💻 دستورات مدیریت Computer Account در Active Directory
Computer Accountها هویت کامپیوترهای عضو دامنه را در Active Directory تشکیل میدهند. مدیریت صحیح این اشیاء باعث افزایش امنیت، سهولت مدیریت دامنه و جلوگیری از ایجاد Computer Accountهای بدون استفاده میشود. در این بخش مهمترین دستورات PowerShell برای مدیریت Computer Objectها معرفی شدهاند.
تمام دستورات این بخش به ماژول ActiveDirectory وابسته هستند.
🖥 Get-ADComputer
دستور Get-ADComputer برای مشاهده اطلاعات Computer Accountهای دامنه استفاده میشود.
Syntax
Get-ADComputer Get-ADComputer -Identity PC01 Get-ADComputer -Filter *
نمونهها
Get-ADComputer PC01
Get-ADComputer -Filter *
Get-ADComputer -Filter * | Select Name,OperatingSystem
➕ New-ADComputer
برای ایجاد Computer Account قبل از Join شدن سیستم به دامنه استفاده میشود.
New-ADComputer -Name "PC100"
ایجاد در OU مشخص
New-ADComputer ` -Name "PC100" ` -Path "OU=Computers,DC=company,DC=local"
✏ Set-ADComputer
برای تغییر ویژگیهای Computer Account استفاده میشود.
Set-ADComputer ` -Identity PC01 ` -Description "Accounting Computer"
افزودن Location
Set-ADComputer ` -Identity PC01 ` -Location "Floor 3"
📦 Move-ADObject
انتقال Computer Account به OU دیگر.
Move-ADObject ` -Identity "CN=PC01,OU=Computers,DC=company,DC=local" ` -TargetPath "OU=IT,DC=company,DC=local"
❌ Remove-ADComputer
حذف Computer Account از Active Directory.
Remove-ADComputer PC01
قبل از حذف Computer Account مطمئن شوید سیستم دیگر عضو دامنه نیست.
🔒 Disable-ADAccount
غیرفعال کردن Computer Account.
Disable-ADAccount PC01$
🔓 Enable-ADAccount
فعالسازی مجدد Computer Account.
Enable-ADAccount PC01$
♻ Reset-ADServiceAccountPassword
در محیطهای دارای gMSA برای بازنشانی رمز عبور Service Account استفاده میشود.
Reset-ADServiceAccountPassword
🌐 دستورات مدیریت Domain
🌍 Get-ADDomain
نمایش اطلاعات کامل دامنه.
Get-ADDomain
🏢 Get-ADForest
نمایش اطلاعات Forest.
Get-ADForest
🧭 Get-ADDomainController
نمایش Domain Controllerهای موجود.
Get-ADDomainController -Filter *
نمایش نزدیکترین DC
Get-ADDomainController -Discover
🔄 دستورات Replication
بررسی سلامت Replication یکی از مهمترین وظایف مدیر Active Directory است.
🔄 repadmin
نمایش وضعیت Replication بین Domain Controllerها.
repadmin /showrepl
نمایش خلاصه Replication
repadmin /replsummary
اجبار Replication
repadmin /syncall /AdeP
🩺 dcdiag
ابزار اصلی بررسی سلامت Domain Controller.
dcdiag
اجرای تست DNS
dcdiag /test:dns
اجرای تمام تستها
dcdiag /v
📑 nltest
بررسی ارتباط کلاینت با Domain Controller.
nltest /dsgetdc:company.local
بررسی Secure Channel
nltest /sc_verify:company.local
📊 خلاصه دستورات بخش چهارم
| دستور | کاربرد |
|---|---|
| Get-ADComputer | نمایش کامپیوترها |
| New-ADComputer | ایجاد Computer Account |
| Set-ADComputer | ویرایش Computer |
| Remove-ADComputer | حذف Computer |
| Disable-ADAccount | غیرفعال کردن Computer |
| Enable-ADAccount | فعال کردن Computer |
| Get-ADDomain | اطلاعات Domain |
| Get-ADForest | اطلاعات Forest |
| Get-ADDomainController | نمایش Domain Controller |
| repadmin | بررسی Replication |
| dcdiag | بررسی سلامت Domain Controller |
| nltest | تست ارتباط با Domain |
🛡️ مدیریت Group Policy با PowerShell
Group Policy یکی از مهمترین قابلیتهای Microsoft Active Directory برای مدیریت متمرکز تنظیمات کاربران و کامپیوترها است. با استفاده از ماژول GroupPolicy در PowerShell میتوان بدون نیاز به کنسول GPMC، تمامی Group Policy Objectها (GPO) را ایجاد، ویرایش، پشتیبانگیری، بازیابی و مدیریت کرد. در این بخش با مهمترین دستورات این ماژول آشنا میشوید.
قبل از اجرای دستورات این بخش، اطمینان حاصل کنید که ماژول GroupPolicy نصب و بارگذاری شده است.
Import-Module GroupPolicy
📄 Get-GPO
دستور Get-GPO اطلاعات مربوط به یک یا چند Group Policy Object را نمایش میدهد. این دستور یکی از پرکاربردترین Cmdletهای ماژول GroupPolicy است و برای بررسی وضعیت GPOها، دریافت GUID، نسخه، وضعیت فعال یا غیرفعال بودن و سایر ویژگیها استفاده میشود.
Syntax
Get-GPO Get-GPO -Name "PolicyName" Get-GPO -Guid GUID Get-GPO -All
پارامترهای مهم
| پارامتر | توضیح |
|---|---|
| -Name | دریافت اطلاعات GPO بر اساس نام |
| -Guid | جستجو بر اساس شناسه یکتا (GUID) |
| -All | نمایش تمامی Group Policy Objectها |
| -Domain | مشخص کردن دامنه موردنظر |
| -Server | اتصال به Domain Controller مشخص |
نمونه اول: نمایش یک GPO
Get-GPO -Name "Default Domain Policy"
این دستور اطلاعات کامل مربوط به Group Policy با نام Default Domain Policy را نمایش میدهد.
نمونه دوم: نمایش همه GPOها
Get-GPO -All
تمام Group Policyهای موجود در دامنه نمایش داده میشوند.
نمونه سوم: مرتبسازی بر اساس نام
Get-GPO -All | Sort-Object DisplayName
نمونه چهارم: انتخاب ستونهای مهم
Get-GPO -All | Select DisplayName, Owner, CreationTime, ModificationTime
نمونه پنجم: خروجی CSV
Get-GPO -All | Select DisplayName, Owner, GpoStatus | Export-Csv C:\GPOList.csv -NoTypeInformation
برای مستندسازی و تهیه گزارش از تمامی GPOها استفاده میشود.
نمونه ششم: اتصال به Domain دیگر
Get-GPO -All ` -Domain company.local
نمونه هفتم: اتصال به Domain Controller خاص
Get-GPO -All ` -Server DC01.company.local
💡 نکته حرفهای
در شبکههای بزرگ بهتر است به جای اجرای مستقیم روی نزدیکترین Domain Controller، از پارامتر
-Server
استفاده کنید تا همیشه اطلاعات از DC مشخصی خوانده شود.
⚠ هشدار
اگر Replication بین Domain Controllerها کامل نشده باشد، ممکن است خروجی Get-GPO در DCهای مختلف متفاوت باشد.
نمونه سناریوی واقعی
فرض کنید مدیر شبکه میخواهد تمام GPOهایی را که در ۳۰ روز اخیر تغییر کردهاند شناسایی کند.
Get-GPO -All |
Where-Object {
$_.ModificationTime -gt (Get-Date).AddDays(-30)
}
خروجی نمونه
| DisplayName | Owner | Status |
|---|---|---|
| Default Domain Policy | Domain Admins | All Settings Enabled |
| Workstations Policy | IT Department | User Settings Disabled |
دستورات مرتبط
- Get-GPOReport
- New-GPO
- Backup-GPO
- Restore-GPO
- Copy-GPO
- Import-GPO
- Get-GPInheritance
✅ Best Practice
- قبل از هرگونه تغییر در GPO از آن Backup تهیه کنید.
- از نامهای استاندارد و قابل فهم برای GPOها استفاده کنید.
- GPOهای قدیمی و بدون استفاده را بهصورت دورهای بررسی و مستندسازی کنید.
- برای تهیه گزارش مدیریتی از خروجی CSV استفاده کنید.
- تغییرات GPO را ابتدا در محیط آزمایشی (Lab) تست کنید.
📑 Get-GPOReport
دستور Get-GPOReport برای تهیه گزارش کامل از تنظیمات یک یا چند Group Policy Object استفاده میشود. این دستور یکی از مهمترین ابزارهای مستندسازی در محیطهای Active Directory است و امکان خروجی گرفتن در قالبهای HTML و XML را فراهم میکند.
ℹ کاربردهای اصلی
- مستندسازی تنظیمات GPO
- بررسی تغییرات اعمال شده روی Policyها
- تهیه گزارش برای ممیزی امنیتی
- مقایسه تنظیمات بین محیطهای مختلف
- آرشیو تنظیمات قبل از تغییرات مهم
Syntax
Get-GPOReport -Name "GPOName" -ReportType HTML Get-GPOReport -Guid GUID -ReportType XML
پارامترهای مهم
| پارامتر | توضیح |
|---|---|
| -Name | نام Group Policy موردنظر |
| -Guid | شناسه یکتای GPO |
| -ReportType | نوع خروجی HTML یا XML |
| -Path | مسیر ذخیره فایل گزارش |
مثال اول: تهیه گزارش HTML از یک GPO
Get-GPOReport ` -Name "Default Domain Policy" ` -ReportType HTML ` -Path C:\Reports\DomainPolicy.html
پس از اجرای دستور، یک فایل HTML شامل تمام تنظیمات Policy ایجاد میشود.
مثال دوم: تهیه گزارش XML
Get-GPOReport ` -Name "Security Policy" ` -ReportType XML ` -Path C:\Reports\Security.xml
فرمت XML برای پردازش خودکار و استفاده در اسکریپتها مناسب است.
مثال سوم: گزارش تمام GPOهای دامنه
$GPOs = Get-GPO -All
foreach($GPO in $GPOs){
Get-GPOReport `
-Name $GPO.DisplayName `
-ReportType HTML `
-Path "C:\Reports\$($GPO.DisplayName).html"
}
💡 نکته حرفهای
در سازمانهای بزرگ، تهیه گزارش دورهای از GPOها یکی از بهترین روشها برای کنترل تغییرات ناخواسته است.
مثال چهارم: گزارش تمام Policyهای امنیتی
Get-GPO -All |
ForEach-Object {
Get-GPOReport `
-Guid $_.Id `
-ReportType HTML `
-Path "C:\GPOReports\$($_.DisplayName).html"
}
سناریوی واقعی سازمانی
فرض کنید قبل از تغییرات امنیتی میخواهید از تمام GPOهای سازمان Backup مستنداتی تهیه کنید. با اجرای اسکریپت زیر تمام Policyها در یک پوشه آرشیو میشوند.
$Folder="C:\GPO-Documentation"
New-Item `
-ItemType Directory `
-Path $Folder `
-Force
Get-GPO -All |
ForEach-Object {
Get-GPOReport `
-Guid $_.Id `
-ReportType HTML `
-Path "$Folder\$($_.DisplayName).html"
}
بررسی خروجی گزارش
| بخش گزارش | اطلاعات نمایش داده شده |
|---|---|
| Details | نام، GUID، مالک و زمان تغییر |
| Computer Configuration | تنظیمات کامپیوترها |
| User Configuration | تنظیمات کاربران |
| Security Settings | Policyهای امنیتی |
⚠ هشدار امنیتی
گزارشهای HTML تولید شده ممکن است شامل اطلاعات حساس ساختار امنیتی سازمان باشند. آنها را در مسیرهای عمومی یا Shareهای بدون دسترسی مناسب ذخیره نکنید.
✅ Best Practice
- قبل از تغییرات گسترده GPO همیشه گزارش تهیه کنید.
- گزارشها را با تاریخ و شماره نسخه ذخیره کنید.
- برای Audit دورهای از خروجی XML استفاده کنید.
- گزارش GPOهای حیاتی مانند Domain Policy را به صورت منظم آرشیو کنید.
دستورات مرتبط
- Get-GPO
- Backup-GPO
- Restore-GPO
- Copy-GPO
- Import-GPO
- New-GPO
➕ New-GPO
دستور New-GPO برای ایجاد یک Group Policy Object جدید در Active Directory استفاده میشود. این دستور معادل ایجاد یک GPO جدید از طریق کنسول Group Policy Management Console (GPMC) است و برای خودکارسازی فرآیندهای مدیریتی در سازمانهای بزرگ کاربرد فراوان دارد.
📌 کاربردهای اصلی New-GPO
- ایجاد Policyهای استاندارد سازمانی
- ساخت GPO برای واحدهای مختلف سازمان
- اتوماسیون مدیریت Group Policy
- ایجاد قالبهای اولیه قبل از تنظیمات Registry و Security
- ساخت Policy در محیطهای آزمایشی و Production
Syntax
New-GPO -Name "GPO Name" New-GPO -Name "GPO Name" -Domain company.local
پارامترهای مهم
| پارامتر | توضیح |
|---|---|
| -Name | نام Group Policy Object جدید |
| -Domain | دامنهای که GPO در آن ساخته میشود |
| -Server | Domain Controller مورد استفاده |
| -Comment | توضیحات مربوط به Policy |
مثال اول: ایجاد یک GPO ساده
New-GPO -Name "Security Policy"
یک Group Policy جدید با نام Security Policy ایجاد میشود.
مثال دوم: ایجاد GPO همراه با توضیحات
New-GPO ` -Name "Workstation Security" ` -Comment "Security configuration for client computers"
قرار دادن توضیحات مناسب باعث سادهتر شدن مدیریت GPOها در آینده میشود.
مثال سوم: ایجاد GPO در دامنه مشخص
New-GPO ` -Name "VPN Configuration" ` -Domain company.local
مثال چهارم: ایجاد چند GPO با PowerShell
در سازمانهای بزرگ میتوان چند Policy را به صورت خودکار ایجاد کرد.
$Policies = @(
"Password Policy",
"Firewall Policy",
"USB Restriction",
"Office Settings"
)
foreach($Policy in $Policies){
New-GPO `
-Name $Policy
}
💡 نکته حرفهای
ایجاد GPO فقط مرحله اول است. پس از ساخت، باید آن را به OU مناسب Link کنید و تنظیمات موردنیاز را اعمال کنید.
مثال پنجم: ایجاد GPO برای واحد IT
$GPO = New-GPO ` -Name "IT Department Policy" ` -Comment "Policy for IT Users" $GPO
متغیر ایجاد شده شامل اطلاعات کامل GPO مانند GUID و Domain است.
مشاهده اطلاعات GPO ایجاد شده
Get-GPO ` -Name "IT Department Policy"
سناریوی واقعی سازمانی
فرض کنید در یک شرکت قصد دارید برای هر بخش یک Policy جداگانه ایجاد کنید. اسکریپت زیر ساختار اولیه GPOها را ایجاد میکند.
$Departments = @(
"Finance",
"HR",
"Sales",
"IT",
"Support"
)
foreach($Dept in $Departments)
{
New-GPO `
-Name "$Dept Policy" `
-Comment "Generated automatically"
}
بررسی نتیجه
| نام GPO | کاربرد |
|---|---|
| Finance Policy | تنظیمات کاربران مالی |
| IT Policy | تنظیمات مدیران شبکه |
| HR Policy | تنظیمات واحد منابع انسانی |
⚠ هشدار
ایجاد تعداد زیاد GPO بدون برنامهریزی باعث پیچیدگی مدیریت، افزایش زمان Logon و مشکلات عیبیابی خواهد شد.
✅ Best Practice
- برای هر GPO یک هدف مشخص تعریف کنید.
- از نامگذاری استاندارد استفاده کنید.
- در Comment هدف Policy را بنویسید.
- از ایجاد GPOهای مشابه خودداری کنید.
- قبل از اعمال در Production در محیط آزمایشی تست کنید.
دستورات مرتبط
- Get-GPO
- Set-GPO
- Rename-GPO
- Backup-GPO
- Copy-GPO
- New-GPLink
- Set-GPRegistryValue
⚙️ Set-GPO
دستور Set-GPO برای ویرایش ویژگیهای عمومی یک Group Policy Object موجود استفاده میشود. با این دستور میتوان اطلاعات مدیریتی مانند توضیحات، مالکیت (Owner)، وضعیت فعال بودن تنظیمات کاربر یا کامپیوتر و برخی ویژگیهای اصلی GPO را تغییر داد.
این Cmdlet برای زمانی کاربرد دارد که یک GPO قبلاً ایجاد شده و مدیر شبکه نیاز دارد بدون حذف و ایجاد مجدد، مشخصات آن را اصلاح کند.
📌 کاربردهای اصلی Set-GPO
- تغییر توضیحات GPO
- تغییر Owner یا مالک GPO
- فعال یا غیرفعال کردن بخش User Configuration
- فعال یا غیرفعال کردن بخش Computer Configuration
- استانداردسازی و مدیریت خودکار GPOها
- اعمال تغییرات مدیریتی بدون استفاده از GPMC
Syntax
Set-GPO -Name "GPO Name" -Comment "Description" Set-GPO -Guid GUID -ComputerVersion Version Set-GPO -Name "GPO Name" -UserVersion Version
پارامترهای مهم
| پارامتر | توضیح |
|---|---|
| -Name | انتخاب GPO بر اساس نام |
| -Guid | انتخاب GPO بر اساس GUID |
| -Comment | ویرایش توضیحات GPO |
| -UserEnabled | فعال یا غیرفعال کردن تنظیمات User |
| -ComputerEnabled | فعال یا غیرفعال کردن تنظیمات Computer |
مثال اول: تغییر توضیحات یک GPO
Set-GPO ` -Name "Security Policy" ` -Comment "Updated security settings for organization"
با اجرای این دستور، توضیحات GPO تغییر خواهد کرد.
مثال دوم: غیرفعال کردن تنظیمات User Configuration
Set-GPO ` -Name "Computer Security Policy" ` -UserEnabled $false
در این حالت بخش User Configuration این GPO پردازش نخواهد شد.
مثال سوم: غیرفعال کردن Computer Configuration
Set-GPO ` -Name "User Settings Policy" ` -ComputerEnabled $false
این روش برای GPOهایی که فقط تنظیمات کاربری دارند بسیار کاربردی است.
مثال چهارم: فعال کردن دوباره هر دو بخش
Set-GPO ` -Name "Default Domain Policy" ` -UserEnabled $true ` -ComputerEnabled $true
مثال پنجم: تغییر توضیحات چند GPO به صورت گروهی
$GPOs = Get-GPO -All
foreach($GPO in $GPOs)
{
Set-GPO `
-Name $GPO.DisplayName `
-Comment "Reviewed by Network Team"
}
💡 نکته حرفهای
قبل از اجرای تغییرات گروهی روی GPOها، ابتدا با دستور Get-GPOReport گزارش تهیه کنید تا امکان بازگشت و بررسی تغییرات وجود داشته باشد.
سناریوی واقعی: استانداردسازی توضیحات GPO
در سازمانهایی که تعداد زیادی GPO دارند، نگهداری توضیحات استاندارد باعث میشود مدیران شبکه در آینده سریعتر هدف هر Policy را تشخیص دهند.
$Policies = Get-GPO -All
foreach($Policy in $Policies)
{
Set-GPO `
-Name $Policy.DisplayName `
-Comment "Managed Policy - IT Department"
}
بررسی نتیجه تغییرات
Get-GPO ` -Name "Security Policy" | Select DisplayName,Description
خطاهای رایج
| خطا | علت احتمالی |
|---|---|
| GPO Not Found | نام GPO اشتباه است یا دسترسی کافی وجود ندارد |
| Access Denied | کاربر عضو گروههای مدیریتی لازم نیست |
| Cannot modify GPO | Replication یا ارتباط با DC مشکل دارد |
⚠ هشدار امنیتی
تغییر وضعیت UserEnabled یا ComputerEnabled میتواند باعث توقف اعمال Policy روی تعداد زیادی سیستم شود. قبل از تغییر روی GPOهای حساس مانند Domain Policy تست انجام دهید.
✅ Best Practice
- برای هر GPO هدف مشخص و توضیحات کامل ثبت کنید.
- از تغییر مستقیم GPOهای حیاتی بدون Backup خودداری کنید.
- تغییرات مهم را ابتدا در OU آزمایشی بررسی کنید.
- مالکیت GPOها را به گروه مدیریتی مناسب واگذار کنید.
- مستندات تغییرات را نگهداری کنید.
دستورات مرتبط
- Get-GPO
- New-GPO
- Rename-GPO
- Backup-GPO
- Copy-GPO
- Remove-GPO
- Get-GPOReport
✏️ Rename-GPO
دستور Rename-GPO برای تغییر نام یک Group Policy Object موجود در Active Directory استفاده میشود. تغییر نام GPO تنها عنوان نمایشی آن را تغییر میدهد و تأثیری روی تنظیمات داخلی، لینکها، GUID و عملکرد Policy ندارد.
از آنجا که هر GPO دارای یک شناسه یکتا (GUID) است، تغییر نام باعث ایجاد Policy جدید نمیشود و تمام Linkهای موجود به همان GPO باقی خواهند ماند.
📌 کاربردهای Rename-GPO
- استانداردسازی نامگذاری GPOها
- اصلاح نامهای نامفهوم یا قدیمی
- هماهنگ کردن نام GPO با ساختار سازمانی
- بهبود مستندسازی و مدیریت Policyها
- تغییر نام گروهی GPOها با اسکریپت
Syntax
Rename-GPO -Name "Old Name" -TargetName "New Name" Rename-GPO -Guid GUID -TargetName "New Name"
پارامترهای مهم
| پارامتر | توضیح |
|---|---|
| -Name | انتخاب GPO بر اساس نام فعلی |
| -Guid | انتخاب GPO بر اساس GUID |
| -TargetName | نام جدید GPO |
| -Domain | مشخص کردن دامنه موردنظر |
مثال اول: تغییر نام یک GPO
Rename-GPO ` -Name "Security Policy" ` -TargetName "Corporate Security Policy"
نام GPO از Security Policy به Corporate Security Policy تغییر میکند.
مثال دوم: تغییر نام با استفاده از GUID
Rename-GPO ` -Guid "8f9c6d12-1234-4567-abcd-123456789abc" ` -TargetName "Firewall Policy"
مثال سوم: مشاهده نام قبل از تغییر
Get-GPO -Name "Old Policy Name"
قبل از Rename بهتر است از وجود GPO و نام صحیح آن اطمینان حاصل شود.
مثال چهارم: تغییر نام گروهی GPOها
در محیطهای بزرگ ممکن است سازمان تصمیم بگیرد استاندارد نامگذاری جدیدی اعمال کند.
$GPOs = Get-GPO -All
foreach($GPO in $GPOs)
{
Rename-GPO `
-Name $GPO.DisplayName `
-TargetName "ORG-$($GPO.DisplayName)"
}
خروجی این اسکریپت باعث اضافه شدن پیشوند ORG به تمام GPOها خواهد شد.
💡 نکته حرفهای
قبل از تغییر نام گروهی، حتماً یک گزارش از GPOها با دستور Get-GPOReport تهیه کنید. این گزارش در زمان عیبیابی بسیار ارزشمند است.
سناریوی واقعی: استاندارد نامگذاری GPO
یکی از روشهای رایج در سازمانها استفاده از الگوی مشخص برای نام GPOها است. برای مثال:
| قبل | بعد |
|---|---|
| Password Policy | CORP-SEC-Password-Policy |
| Office Settings | CORP-APP-Office-Settings |
| Firewall | CORP-SEC-Firewall |
بررسی نتیجه تغییر
Get-GPO -All | Select DisplayName,Id
GUID همان مقدار قبلی باقی میماند و فقط DisplayName تغییر میکند.
خطاهای رایج
| خطا | دلیل |
|---|---|
| GPO Not Found | نام فعلی اشتباه وارد شده است |
| Duplicate Name | GPO دیگری با نام جدید وجود دارد |
| Access Denied | مجوز تغییر GPO وجود ندارد |
⚠ هشدار
اگرچه Rename-GPO باعث قطع Linkها نمیشود، اما تغییر نامهای گسترده میتواند باعث سردرگمی مدیران شبکه و مستندات قدیمی شود.
✅ Best Practice
- از ابتدا استاندارد نامگذاری GPO تعریف کنید.
- نام GPO باید هدف آن را مشخص کند.
- از نامهای کوتاه و واضح استفاده کنید.
- تغییر نام Policyهای حیاتی را مستندسازی کنید.
- از تغییر نامهای مکرر خودداری کنید.
دستورات مرتبط
- Get-GPO
- New-GPO
- Set-GPO
- Backup-GPO
- Copy-GPO
- Remove-GPO
- Get-GPOReport
📋 Copy-GPO
دستور Copy-GPO برای ایجاد یک نسخه کپی از یک Group Policy Object موجود استفاده میشود. این دستور در سناریوهایی مانند انتقال تنظیمات از محیط آزمایشی (Test) به محیط عملیاتی (Production)، ایجاد Templateهای سازمانی و استانداردسازی Policyها کاربرد دارد.
📌 کاربردها:
- کپی GPO بین دامنهها
- ایجاد نسخه آزمایشی از Policy
- ساخت Templateهای استاندارد
- جلوگیری از ایجاد مجدد تنظیمات به صورت دستی
Syntax
Copy-GPO -SourceName "Source GPO" -TargetName "New GPO"
مثال اول: کپی یک GPO
Copy-GPO ` -SourceName "Security Policy" ` -TargetName "Security Policy Copy"
مثال دوم: کپی بین دو Domain
Copy-GPO ` -SourceName "Firewall Policy" ` -TargetName "Firewall Policy New" ` -TargetDomain company2.local
مثال سوم: کپی با توضیحات جدید
Copy-GPO ` -SourceName "Default Security" ` -TargetName "Branch Security Policy" ` -Comment "Created from corporate template"
💡 نکته حرفهای
برای انتقال کامل GPO بین Forestهای مختلف معمولاً استفاده از
Backup-GPO
و
Import-GPO
به همراه Migration Table گزینه مناسبتری است.
Best Practice
- قبل از Copy کردن، از GPO اصلی Backup تهیه کنید.
- نام نسخههای کپی شده را استاندارد انتخاب کنید.
- بعد از ایجاد Copy، Linkهای آن را بررسی کنید.
- قبل از اعمال روی کاربران واقعی، در OU آزمایشی تست کنید.
دستورات مرتبط
- Backup-GPO
- Restore-GPO
- Import-GPO
- Get-GPOReport
- New-GPLink
♻️ Restore-GPO
دستور Restore-GPO برای بازگردانی یک Group Policy Object از نسخه پشتیبان تهیهشده با دستور Backup-GPO استفاده میشود. این دستور در شرایطی مانند حذف اشتباه GPO، تغییرات نامناسب یا نیاز به بازگشت به تنظیمات قبلی کاربرد دارد.
📌 کاربردهای اصلی:
- بازیابی GPO حذف شده
- برگشت تنظیمات بعد از تغییر اشتباه
- بازگردانی Policyهای امنیتی
- مدیریت Disaster Recovery
Syntax
Restore-GPO -Name "GPO Name" -Path "Backup Path"
مثال اول: بازیابی یک GPO
Restore-GPO ` -Name "Security Policy" ` -Path "C:\GPOBackup"
مثال دوم: بازیابی GPO حذفشده
Restore-GPO ` -BackupId "7a2c1f44-1111-2222-3333-abcdef123456" ` -Path "C:\GPOBackup"
مثال سوم: بازیابی روی Domain Controller مشخص
Restore-GPO ` -Name "Firewall Policy" ` -Path "C:\GPOBackup" ` -Server DC01.company.local
💡 نکته حرفهای
Restore-GPO تنظیمات داخل GPO را بازیابی میکند؛ اما اگر Linkهای GPO به OUها حذف شده باشند، باید آنها را جداگانه با دستورهای مدیریت Link بازسازی کنید.
بررسی Backupهای قابل بازیابی
Get-GPOBackup ` -Path "C:\GPOBackup"
سناریوی واقعی
فرض کنید یک مدیر شبکه به اشتباه تنظیمات Firewall Policy را تغییر داده است. ابتدا Backup قبلی انتخاب شده و سپس GPO به حالت سالم قبلی بازگردانده میشود.
Restore-GPO ` -Name "Firewall Policy" ` -Path "D:\Backup\GPO"
⚠ هشدار
قبل از Restore روی GPOهای حساس مانند Default Domain Policy، ابتدا گزارش وضعیت فعلی را با Get-GPOReport ذخیره کنید.
Best Practice
- قبل از Restore، نسخه فعلی GPO را Backup کنید.
- عملیات بازیابی را ابتدا در محیط آزمایشی انجام دهید.
- Backupها را با تاریخ و توضیحات مناسب نگهداری کنید.
- بعد از Restore، با gpresult و گزارش GPO صحت عملکرد را بررسی کنید.
دستورات مرتبط
- Backup-GPO
- Import-GPO
- Copy-GPO
- Get-GPOReport
- Get-GPO
- Get-GPInheritance
📥 Import-GPO
دستور Import-GPO برای وارد کردن تنظیمات یک Group Policy Object از یک نسخه Backup به یک GPO موجود استفاده میشود. این دستور بیشتر در مهاجرت بین Domainها، انتقال تنظیمات از محیط آزمایشی به Production و استانداردسازی Policyها کاربرد دارد.
📌 کاربردهای اصلی:
- انتقال GPO بین دو Domain
- مهاجرت Active Directory
- اعمال تنظیمات استاندارد سازمانی
- بازیابی تنظیمات از Backup
- ایجاد Template برای GPOهای جدید
Syntax
Import-GPO -BackupGpoName "Backup Name" -Path "Backup Path" -TargetName "Target GPO"
مثال اول: Import یک GPO
Import-GPO ` -BackupGpoName "Security Policy" ` -Path "C:\GPOBackup" ` -TargetName "Imported Security Policy"
مثال دوم: انتقال تنظیمات به GPO موجود
Import-GPO ` -BackupGpoName "Firewall Backup" ` -Path "D:\Backup" ` -TargetName "Firewall Policy"
مثال سوم: استفاده از Migration Table
Import-GPO ` -BackupGpoName "Branch Policy" ` -Path "C:\Backup" ` -MigrationTable "C:\Migration\Table.xml"
💡 نکته حرفهای
در مهاجرت بین Domainهای مختلف، نام Computerها، کاربران و مسیرهای شبکه ممکن است متفاوت باشند. استفاده از Migration Table برای اصلاح Referenceها ضروری است.
سناریوی واقعی مهاجرت
فرض کنید یک شرکت دارای Domain قدیمی است و قصد انتقال تنظیمات امنیتی به Domain جدید را دارد. ابتدا از GPOها Backup گرفته شده و سپس در محیط جدید Import میشوند.
Backup-GPO ` -Name "Corporate Security" ` -Path "D:\GPOBackup" Import-GPO ` -BackupGpoName "Corporate Security" ` -Path "D:\GPOBackup" ` -TargetName "New Corporate Security"
تفاوت Import-GPO و Restore-GPO
| دستور | کاربرد |
|---|---|
| Restore-GPO | بازگردانی همان GPO در همان Domain |
| Import-GPO | انتقال تنظیمات به GPO دیگر یا Domain دیگر |
⚠ هشدار
Import-GPO فقط تنظیمات داخل Policy را منتقل میکند و Linkهای GPO به OUها منتقل نمیشوند. پس از Import باید لینکها را جداگانه مدیریت کنید.
Best Practice
- قبل از Import از محیط مقصد Backup تهیه کنید.
- Migration Table را قبل از مهاجرت بررسی کنید.
- پس از Import گزارش GPO تولید کنید.
- تنظیمات امنیتی را قبل از Production تست کنید.
دستورات مرتبط
- Backup-GPO
- Restore-GPO
- Copy-GPO
- Get-GPOReport
- New-GPO
🗑️ Remove-GPO
دستور Remove-GPO برای حذف یک Group Policy Object از Active Directory استفاده میشود. این دستور یک عملیات حساس مدیریتی است، زیرا حذف GPO باعث حذف تنظیمات آن Policy شده و در صورت حذف اشتباه ممکن است روی تعداد زیادی کاربر و سیستم تأثیر بگذارد.
📌 کاربردهای اصلی:
- حذف GPOهای قدیمی و بدون استفاده
- پاکسازی محیط Active Directory
- حذف Policyهای آزمایشی
- مدیریت چرخه عمر GPOها
Syntax
Remove-GPO -Name "GPO Name" Remove-GPO -Guid GUID
مثال اول: حذف یک GPO با نام
Remove-GPO ` -Name "Old Security Policy"
مثال دوم: حذف با GUID
Remove-GPO ` -Guid "12345678-abcd-1234-abcd-123456789abc"
مثال سوم: حذف چند GPO آزمایشی
$TestGPOs = @(
"Test Policy 1",
"Test Policy 2"
)
foreach($GPO in $TestGPOs)
{
Remove-GPO -Name $GPO
}
⚠ هشدار مهم
حذف GPO غیرقابل بازگشت است. قبل از اجرای Remove-GPO همیشه از Policy موردنظر با Backup-GPO نسخه پشتیبان تهیه کنید.
بررسی قبل از حذف
Get-GPO ` -Name "Old Security Policy" Get-GPOReport ` -Name "Old Security Policy" ` -ReportType HTML ` -Path C:\Temp\BeforeDelete.html
حذف امن GPO
$GPO = Get-GPO ` -Name "Unused Policy" Backup-GPO ` -Name $GPO.DisplayName ` -Path "C:\GPOBackup" Remove-GPO ` -Name $GPO.DisplayName
💡 نکته حرفهای
قبل از حذف GPO بررسی کنید که آیا Policy به OU، Site یا Domain لینک شده است یا خیر. حذف GPO لینکها را نیز از بین میبرد.
پیدا کردن GPOهای قدیمی
Get-GPO -All |
Where-Object {
$_.ModificationTime -lt (Get-Date).AddYears(-1)
}
Best Practice
- قبل از حذف، گزارش کامل GPO تهیه کنید.
- GPOهای بلااستفاده را ابتدا Disable و سپس حذف کنید.
- حذف Policyهای حیاتی را با تأیید چند مرحلهای انجام دهید.
- فرآیند حذف را در Change Management ثبت کنید.
- Backupهای قدیمی را برای بازیابی احتمالی نگهداری کنید.
دستورات مرتبط
- Get-GPO
- Backup-GPO
- Restore-GPO
- Get-GPOReport
- Remove-GPLink
🔗 مدیریت Link و ارثبری Group Policy با PowerShell
دستورات این بخش برای اتصال، تغییر، حذف و بررسی ارتباط GPOها با OU، Domain و Siteهای اکتیودایرکتوری استفاده میشوند.
🔹 New-GPLink
برای ایجاد Link بین یک GPO و OU، Domain یا Site استفاده میشود.
New-GPLink -Name "Security Policy" -Target "OU=Users,DC=company,DC=local"
🔹 Set-GPLink
برای تغییر وضعیت Link مانند فعال/غیرفعال کردن یا تنظیم Enforced استفاده میشود.
Set-GPLink -Name "Security Policy" -Target "OU=Users,DC=company,DC=local" -Enforced Yes
🔹 Remove-GPLink
برای حذف اتصال یک GPO از OU، Domain یا Site استفاده میشود.
Remove-GPLink -Name "Old Policy" -Target "OU=Users,DC=company,DC=local"
🔹 Get-GPInheritance
برای مشاهده ترتیب اعمال Policyها، ارثبری و GPOهای مؤثر روی یک OU استفاده میشود.
Get-GPInheritance -Target "OU=Users,DC=company,DC=local"
🔹 Set-GPInheritance
برای فعال یا غیرفعال کردن Block Inheritance روی OU استفاده میشود.
Set-GPInheritance -Target "OU=Users,DC=company,DC=local" -IsBlocked Yes
💡 نکات مهم مدیریت Link
- GPO بدون Link روی کاربران و کامپیوترها اعمال نمیشود.
- اولویت اعمال Policyها با ترتیب OU و تنظیمات Enforced تعیین میشود.
- برای عیبیابی از gpresult و Get-GPInheritance استفاده کنید.
دستورات مرتبط
- Get-GPO
- New-GPO
- Get-GPResultantSetOfPolicy
- Invoke-GPUpdate
🛠️ دستورات عیبیابی Group Policy با PowerShell و CMD
این دستورات برای بررسی وضعیت اعمال GPO، تشخیص خطاها و مشاهده Policyهای مؤثر روی کاربران و سیستمها استفاده میشوند.
🔹 gpupdate
برای دریافت و اعمال فوری Group Policyهای جدید روی سیستم استفاده میشود.
gpupdate /force
🔹 Invoke-GPUpdate
برای اجرای Remote Group Policy Update روی سیستمهای شبکه استفاده میشود.
Invoke-GPUpdate -Computer "PC01" -Force
🔹 gpresult
برای مشاهده GPOهای اعمالشده روی User یا Computer استفاده میشود.
gpresult /r
🔹 gpresult /h
برای ایجاد گزارش HTML از وضعیت کامل Group Policy استفاده میشود.
gpresult /h C:\Report\GPResult.html
🔹 Get-GPResultantSetOfPolicy
برای دریافت Resultant Set of Policy (RSoP) با PowerShell استفاده میشود.
Get-GPResultantSetOfPolicy -ReportType HTML -Path C:\RSoP.html
🔹 Get-GPOReport
برای تهیه گزارش کامل از تنظیمات یک GPO استفاده میشود.
Get-GPOReport -Name "Security Policy" -ReportType HTML -Path C:\GPO.html
🔹 Get-WinEvent
برای بررسی Event Logهای مرتبط با Group Policy استفاده میشود.
Get-WinEvent -LogName "Microsoft-Windows-GroupPolicy/Operational"
💡 نکات عیبیابی سریع
- ابتدا gpupdate /force اجرا کنید.
- با gpresult بررسی کنید چه Policyهایی اعمال شدهاند.
- Event Viewer بخش GroupPolicy را بررسی کنید.
- Replication بین Domain Controllerها را کنترل کنید.
دستورات مرتبط
- Get-GPO
- Get-GPInheritance
- Invoke-GPUpdate
- dcdiag
- repadmin
🔐 مدیریت Registry در Group Policy با PowerShell
این دستورات برای ایجاد، مشاهده و حذف تنظیمات Registry-Based Policy در Group Policy استفاده میشوند و امکان مدیریت خودکار تنظیمات ویندوز را فراهم میکنند.
🔹 Set-GPRegistryValue
برای ایجاد یا تغییر مقدار Registry در یک GPO استفاده میشود.
Set-GPRegistryValue -Name "Security Policy" -Key "HKLM\Software\Policies\Test" -ValueName "Enabled" -Type DWord -Value 1
🔹 Get-GPRegistryValue
برای مشاهده تنظیمات Registry موجود در یک GPO استفاده میشود.
Get-GPRegistryValue -Name "Security Policy" -Key "HKLM\Software\Policies\Test"
🔹 Remove-GPRegistryValue
برای حذف یک مقدار Registry از تنظیمات Group Policy استفاده میشود.
Remove-GPRegistryValue -Name "Security Policy" -Key "HKLM\Software\Policies\Test" -ValueName "Enabled"
🔹 مثال امنیتی: غیرفعال کردن USB Storage
Set-GPRegistryValue -Name "USB Restriction Policy" -Key "HKLM\System\CurrentControlSet\Services\USBSTOR" -ValueName "Start" -Type DWord -Value 4
🔹 مثال: فعالسازی تنظیمات Windows Firewall
Set-GPRegistryValue -Name "Firewall Policy" -Key "HKLM\Software\Policies\Microsoft\WindowsFirewall" -ValueName "EnableFirewall" -Type DWord -Value 1
💡 نکته حرفهای
مدیریت Registry از طریق GPO یکی از سریعترین روشها برای اعمال تنظیمات یکسان روی هزاران سیستم در شبکه است.
Best Practice
- قبل از تغییر Registry Policy از GPO Backup تهیه کنید.
- مقادیر Registry را ابتدا در محیط آزمایشی تست کنید.
- از نامگذاری واضح برای GPOهای Registry استفاده کنید.
- از تغییر Registryهای حساس بدون مستندات خودداری کنید.
دستورات مرتبط
- New-GPO
- Set-GPO
- Get-GPOReport
- Backup-GPO
- Restore-GPO
🛡️ مدیریت تنظیمات امنیتی Group Policy
این بخش شامل دستورات و روشهای مدیریت Policyهای امنیتی مانند رمز عبور، محدودیت ورود، دسترسی کاربران و فیلترهای اعمال GPO است.
🔹 Get-GPO
برای مشاهده و بررسی GPOهای امنیتی موجود در دامنه استفاده میشود.
Get-GPO -All
🔹 Set-GPRegistryValue (Password Policy)
برای اعمال تنظیمات امنیتی مانند Password Policy از طریق Registry-Based Policy استفاده میشود.
Set-GPRegistryValue -Name "Password Policy" -Key "HKLM\Software\Policies\Security" -ValueName "MinimumPasswordLength" -Type DWord -Value 14
🔹 Security Filtering
برای تعیین اینکه کدام کاربران یا گروهها یک GPO را دریافت کنند استفاده میشود.
Set-GPPermission -Name "Security Policy" -TargetName "IT Admins" -PermissionLevel GpoApply
🔹 Set-GPPermission
برای مدیریت سطح دسترسی کاربران و گروهها روی یک GPO استفاده میشود.
Set-GPPermission -Name "Firewall Policy" -TargetName "Domain Users" -TargetType Group -PermissionLevel GpoRead
🔹 Get-GPPermission
برای مشاهده مجوزهای اختصاص داده شده به یک GPO استفاده میشود.
Get-GPPermission -Name "Security Policy" -All
🔹 New-GPWmiFilter
برای ایجاد WMI Filter جهت اعمال GPO فقط روی سیستمهای مشخص استفاده میشود.
New-GPWmiFilter -Name "Windows 11 Filter" -Query "Select * from Win32_OperatingSystem"
🔹 Loopback Processing
برای اعمال User Policy بر اساس کامپیوتر واردشده استفاده میشود و در محیطهای Terminal Server کاربرد زیادی دارد.
💡 نکات امنیتی مهم
- GPOهای امنیتی را قبل از Production تست کنید.
- برای Policyهای حساس از Security Filtering استفاده کنید.
- مجوز Edit روی GPO را محدود نگه دارید.
- از Backup دورهای GPOهای امنیتی استفاده کنید.
دستورات مرتبط
- Set-GPPermission
- Get-GPPermission
- New-GPWmiFilter
- Set-GPLink
- Get-GPInheritance
👤 مدیریت کاربران و گروهها در Active Directory با PowerShell
دستورات این بخش برای ایجاد، مدیریت، تغییر و حذف کاربران و گروههای Active Directory استفاده میشوند.
🔹 Get-ADUser
برای مشاهده اطلاعات کاربران Active Directory استفاده میشود.
Get-ADUser -Identity ali
🔹 New-ADUser
برای ساخت کاربر جدید در Active Directory استفاده میشود.
New-ADUser -Name "Ali Ahmadi" -SamAccountName "aahmadi" -Enabled $true
🔹 Set-ADUser
برای تغییر مشخصات کاربران مانند نام، ایمیل و ویژگیهای AD استفاده میشود.
Set-ADUser -Identity aahmadi -EmailAddress "ali@company.com"
🔹 Disable-ADAccount
برای غیرفعال کردن حساب کاربری در Active Directory استفاده میشود.
Disable-ADAccount -Identity aahmadi
🔹 Enable-ADAccount
برای فعالسازی دوباره حساب کاربری غیرفعال شده استفاده میشود.
Enable-ADAccount -Identity aahmadi
🔹 Remove-ADUser
برای حذف کاربر از Active Directory استفاده میشود.
Remove-ADUser -Identity aahmadi
🔹 Get-ADGroup
برای مشاهده گروههای موجود در Active Directory استفاده میشود.
Get-ADGroup -Filter *
🔹 New-ADGroup
برای ایجاد گروه جدید در Active Directory استفاده میشود.
New-ADGroup -Name "IT Admins" -GroupScope Global
🔹 Add-ADGroupMember
برای افزودن کاربران یا گروهها به یک گروه AD استفاده میشود.
Add-ADGroupMember -Identity "IT Admins" -Members aahmadi
🔹 Remove-ADGroupMember
برای حذف عضو از یک گروه Active Directory استفاده میشود.
Remove-ADGroupMember -Identity "IT Admins" -Members aahmadi
💡 نکات مدیریتی
- برای عملیات گروهی از CSV و Import-Csv استفاده کنید.
- قبل از حذف کاربران مهم، وضعیت آنها را Export کنید.
- مجوزهای مدیریتی را بر اساس اصل Least Privilege تنظیم کنید.
- فعالسازی کاربران جدید را با فرآیند تایید انجام دهید.
دستورات مرتبط
- Get-ADComputer
- Get-ADOrganizationalUnit
- Move-ADObject
- Search-ADAccount
- Unlock-ADAccount
💻 مدیریت Computer Account و OU در Active Directory با PowerShell
این دستورات برای مدیریت کامپیوترها، واحدهای سازمانی (OU) و جابهجایی Objectها در Active Directory استفاده میشوند.
🔹 Get-ADComputer
برای مشاهده اطلاعات Computer Accountهای موجود در دامنه استفاده میشود.
Get-ADComputer -Filter *
🔹 New-ADComputer
برای ایجاد Computer Account جدید در Active Directory استفاده میشود.
New-ADComputer -Name "PC-001"
🔹 Set-ADComputer
برای تغییر ویژگیهای Computer Account مانند Description یا Attributeها استفاده میشود.
Set-ADComputer -Identity "PC-001" -Description "Finance Computer"
🔹 Disable-ADAccount
برای غیرفعال کردن حساب کامپیوتر در Active Directory استفاده میشود.
Disable-ADAccount -Identity "PC-001"
🔹 Remove-ADComputer
برای حذف Computer Account از Active Directory استفاده میشود.
Remove-ADComputer -Identity "PC-001"
🔹 Get-ADOrganizationalUnit
برای مشاهده OUهای موجود در ساختار Active Directory استفاده میشود.
Get-ADOrganizationalUnit -Filter *
🔹 New-ADOrganizationalUnit
برای ساخت OU جدید در Active Directory استفاده میشود.
New-ADOrganizationalUnit -Name "Servers"
🔹 Move-ADObject
برای انتقال کاربران، کامپیوترها یا Objectهای AD بین OUها استفاده میشود.
Move-ADObject -Identity "CN=PC-001" -TargetPath "OU=Computers,DC=company,DC=local"
🔹 Search-ADAccount
برای پیدا کردن حسابهای غیرفعال، منقضی یا بدون استفاده استفاده میشود.
Search-ADAccount -AccountInactive
💡 نکات مدیریتی
- کامپیوترهای سازمانی را بر اساس واحد، شعبه یا نوع کاربری در OU جدا کنید.
- قبل از حذف Computer Accountهای قدیمی، گزارش تهیه کنید.
- از OUهای مجزا برای اعمال GPOهای متفاوت استفاده کنید.
- حسابهای غیرفعال قدیمی را به صورت دورهای بررسی کنید.
دستورات مرتبط
- Get-ADUser
- Get-ADGroup
- Move-ADObject
- Get-ADDomain
- Get-ADForest
🌐 مدیریت Domain و Forest در Active Directory با PowerShell
این دستورات برای مشاهده ساختار دامنه، Forest، کنترلرهای دامنه و بررسی سلامت Active Directory استفاده میشوند.
🔹 Get-ADDomain
برای مشاهده اطلاعات Domain مانند نام، SID و سطح عملکرد دامنه استفاده میشود.
Get-ADDomain
🔹 Get-ADForest
برای مشاهده اطلاعات Forest، Domainهای عضو و ساختار کلی AD استفاده میشود.
Get-ADForest
🔹 Get-ADDomainController
برای مشاهده اطلاعات Domain Controllerها و وضعیت آنها استفاده میشود.
Get-ADDomainController -Filter *
🔹 Get-ADReplicationSite
برای مشاهده Siteهای Active Directory و ساختار Replication استفاده میشود.
Get-ADReplicationSite -Filter *
🔹 Get-ADReplicationFailure
برای بررسی خطاهای Replication بین Domain Controllerها استفاده میشود.
Get-ADReplicationFailure -Target DC01
🔹 Get-ADReplicationPartnerMetadata
برای بررسی وضعیت ارتباط Replication بین DCها استفاده میشود.
Get-ADReplicationPartnerMetadata -Target DC01
🔹 Repadmin (CMD)
برای مدیریت و عیبیابی پیشرفته Replication در Active Directory استفاده میشود.
repadmin /replsummary
🔹 Dcdiag (CMD)
برای بررسی سلامت سرویسهای Active Directory Domain Controller استفاده میشود.
dcdiag /v
💡 نکات مدیریتی
- قبل از تغییرات بزرگ AD سلامت DCها را بررسی کنید.
- Replication سالم برای عملکرد GPO و احراز هویت ضروری است.
- خطاهای Replication را به صورت دورهای مانیتور کنید.
- از چند DC در محیطهای بزرگ برای افزونگی استفاده کنید.
دستورات مرتبط
- Get-ADUser
- Get-ADComputer
- Get-ADSite
- Get-ADObject
- Get-ADTrust
🩺 مدیریت سرویسها، لاگها و سلامت Active Directory
این دستورات برای بررسی سرویسهای مرتبط با Active Directory، مشاهده رویدادها و عیبیابی مشکلات Domain Controller استفاده میشوند.
🔹 Get-Service
برای مشاهده وضعیت سرویسهای ویندوز و سرویسهای Active Directory استفاده میشود.
Get-Service NTDS
🔹 Start-Service
برای راهاندازی سرویس متوقفشده استفاده میشود.
Start-Service NTDS
🔹 Stop-Service
برای متوقف کردن یک سرویس ویندوز استفاده میشود.
Stop-Service ServiceName
🔹 Restart-Service
برای راهاندازی مجدد سرویسهای Active Directory و وابسته استفاده میشود.
Restart-Service NTDS
🔹 Get-WinEvent
برای مشاهده Event Logهای امنیتی و سیستمی Active Directory استفاده میشود.
Get-WinEvent -LogName Security
🔹 Get-EventLog
برای مشاهده لاگهای قدیمی ویندوز و بررسی خطاهای سیستم استفاده میشود.
Get-EventLog -LogName System
🔹 Test-ComputerSecureChannel
برای بررسی ارتباط امن بین سیستم عضو Domain و Domain Controller استفاده میشود.
Test-ComputerSecureChannel
🔹 Reset-ComputerMachinePassword
برای بازنشانی رمز Machine Account در مشکلات Trust Relationship استفاده میشود.
Reset-ComputerMachinePassword
🔹 dcdiag
برای بررسی سلامت کلی Domain Controller و سرویسهای AD DS استفاده میشود.
dcdiag /test:DNS
🔹 repadmin
برای بررسی و مدیریت Replication بین Domain Controllerها استفاده میشود.
repadmin /showrepl
💡 نکات عیبیابی Active Directory
- ابتدا DNS و سپس Replication را بررسی کنید.
- Event Viewer یکی از مهمترین منابع خطایابی AD است.
- قبل از تغییرات حساس، سلامت DCها را بررسی کنید.
- Trust Relationship خطاها را با Secure Channel بررسی کنید.
دستورات مرتبط
- Get-ADDomainController
- Get-ADReplicationFailure
- Get-DnsServerZone
- Resolve-DnsName
- nltest
🌍 مدیریت DNS مرتبط با Active Directory با PowerShell
DNS یکی از سرویسهای حیاتی Active Directory است و بیشتر مشکلات Login، Replication و اعمال GPO به تنظیمات DNS مرتبط هستند.
🔹 Get-DnsServerZone
برای مشاهده Zoneهای DNS روی سرور استفاده میشود.
Get-DnsServerZone
🔹 Get-DnsServerResourceRecord
برای مشاهده رکوردهای DNS مانند A، CNAME و SRV استفاده میشود.
Get-DnsServerResourceRecord -ZoneName "company.local"
🔹 Add-DnsServerResourceRecordA
برای ایجاد رکورد A جدید در DNS استفاده میشود.
Add-DnsServerResourceRecordA -ZoneName "company.local" -Name "Server01" -IPv4Address "192.168.1.10"
🔹 Remove-DnsServerResourceRecord
برای حذف رکورد DNS از Zone استفاده میشود.
Remove-DnsServerResourceRecord -ZoneName "company.local" -Name "OldServer"
🔹 Clear-DnsServerCache
برای پاکسازی Cache DNS روی سرور استفاده میشود.
Clear-DnsServerCache
🔹 Resolve-DnsName
برای تست Resolution و بررسی صحت پاسخ DNS استفاده میشود.
Resolve-DnsName dc01.company.local
🔹 nslookup
ابزار خط فرمان برای بررسی دستی رکوردها و پاسخهای DNS است.
nslookup company.local
💡 نکات مهم DNS و Active Directory
- Domain Controllerها باید DNS صحیح داشته باشند.
- رکوردهای SRV برای مکانیابی سرویسهای AD ضروری هستند.
- قبل از عیبیابی GPO ابتدا DNS را بررسی کنید.
- از حذف رکوردهای حیاتی DNS بدون Backup خودداری کنید.
دستورات مرتبط
- dcdiag /test:dns
- repadmin
- Get-ADDomainController
- Get-DnsServerSetting
- Test-NetConnection
👑 مدیریت FSMO Roleها در Active Directory با PowerShell
FSMO Roleها وظایف حیاتی Active Directory هستند که بین Domain Controllerها توزیع میشوند. مدیریت صحیح آنها برای پایداری Domain ضروری است.
🔹 Get-ADForest
برای مشاهده FSMO Roleهای سطح Forest مانند Schema Master و Domain Naming Master استفاده میشود.
Get-ADForest | Select SchemaMaster,DomainNamingMaster
🔹 Get-ADDomain
برای مشاهده FSMO Roleهای سطح Domain مانند RID Master، PDC Emulator و Infrastructure Master استفاده میشود.
Get-ADDomain | Select RIDMaster,PDCEmulator,InfrastructureMaster
🔹 Move-ADDirectoryServerOperationMasterRole
برای انتقال FSMO Roleها بین Domain Controllerها استفاده میشود.
Move-ADDirectoryServerOperationMasterRole -Identity DC02 -OperationMasterRole PDCEmulator
🔹 انتقال تمام FSMO Roleها
برای انتقال تمام Roleها به یک Domain Controller جدید استفاده میشود.
Move-ADDirectoryServerOperationMasterRole -Identity DC02 -OperationMasterRole 0,1,2,3,4
🔹 netdom query fsmo
برای مشاهده سریع مالک FSMO Roleها با CMD استفاده میشود.
netdom query fsmo
💡 نکات مهم FSMO
- قبل از انتقال Roleها سلامت DC مقصد را بررسی کنید.
- برای انتقال عادی از Move استفاده کنید.
- Seize کردن FSMO فقط در خرابی کامل DC انجام میشود.
- DNS و Replication قبل از انتقال باید سالم باشند.
دستورات مرتبط
- Get-ADDomainController
- repadmin /replsummary
- dcdiag
- Get-ADReplicationFailure
- ntdsutil
🔎 مدیریت Objectها و Trust در Active Directory با PowerShell
این دستورات برای جستجو، ایجاد، تغییر و مدیریت Objectهای مختلف Active Directory مانند User، Computer، Group و Trust استفاده میشوند.
🔹 Get-ADObject
برای جستجو و مشاهده Objectهای مختلف در Active Directory استفاده میشود.
Get-ADObject -Filter *
🔹 Search-ADAccount
برای پیدا کردن حسابهای غیرفعال، قفلشده یا منقضیشده استفاده میشود.
Search-ADAccount -LockedOut
🔹 Get-ADTrust
برای مشاهده ارتباط Trust بین Domainها و Forestها استفاده میشود.
Get-ADTrust
🔹 New-ADObject
برای ایجاد Objectهای سفارشی در Active Directory استفاده میشود.
New-ADObject -Name "Custom Object" -Type "user"
🔹 Set-ADObject
برای تغییر Attributeهای یک Object در Active Directory استفاده میشود.
Set-ADObject
-Identity "ObjectDN"
-Replace @{description="Updated"}
🔹 Remove-ADObject
برای حذف Objectهای خاص از Active Directory استفاده میشود.
Remove-ADObject -Identity "ObjectDN"
🔹 Unlock-ADAccount
برای باز کردن حسابهای کاربری قفلشده در AD استفاده میشود.
Unlock-ADAccount -Identity user01
🔹 Get-ADPrincipalGroupMembership
برای مشاهده گروههایی که یک کاربر یا کامپیوتر عضو آن است استفاده میشود.
Get-ADPrincipalGroupMembership user01
💡 نکات مدیریتی
- قبل از حذف Objectهای مهم، Export یا Backup تهیه کنید.
- برای جستجوی دقیقتر از Filter و LDAPFilter استفاده کنید.
- Trustها را در محیطهای چنددامنهای به صورت دورهای بررسی کنید.
- تغییر Attributeهای حساس باید مستندسازی شود.
دستورات مرتبط
- Get-ADUser
- Get-ADComputer
- Get-ADGroup
- Get-ADDomain
- Get-ADForest
👥 مدیریت گروهی کاربران Active Directory با PowerShell
این دستورات برای ایجاد، تغییر، گزارشگیری و مدیریت تعداد زیادی کاربر در Active Directory استفاده میشوند.
🔹 Import-Csv
برای خواندن اطلاعات کاربران از فایل CSV و انجام عملیات گروهی استفاده میشود.
Import-Csv C:\Users.csv
🔹 Export-Csv
برای خروجی گرفتن از اطلاعات کاربران و تهیه گزارش استفاده میشود.
Get-ADUser -Filter * | Export-Csv C:\ADUsers.csv
🔹 ایجاد کاربران گروهی
برای ساخت چندین کاربر از فایل CSV استفاده میشود.
Import-Csv C:\Users.csv |
ForEach-Object {
New-ADUser
-Name $_.Name
-SamAccountName $_.User
}
🔹 Set-ADAccountPassword
برای تغییر یا تنظیم رمز عبور کاربران Active Directory استفاده میشود.
Set-ADAccountPassword -Identity user01 -Reset
🔹 تغییر رمز گروهی کاربران
برای اعمال رمز جدید روی چند کاربر به صورت خودکار استفاده میشود.
Get-ADUser -Filter * | Set-ADAccountPassword
🔹 Disable کاربران گروهی
برای غیرفعال کردن حسابهای کاربران به صورت گروهی استفاده میشود.
Get-ADUser -Filter * | Disable-ADAccount
🔹 Unlock کاربران گروهی
برای باز کردن حسابهای قفلشده کاربران استفاده میشود.
Search-ADAccount -LockedOut | Unlock-ADAccount
🔹 گزارش کاربران بدون ورود طولانی
برای شناسایی کاربران غیرفعال یا بدون استفاده استفاده میشود.
Search-ADAccount -AccountInactive
💡 نکات مدیریت گروهی
- قبل از عملیات Bulk از کاربران Export تهیه کنید.
- اسکریپتها را ابتدا روی چند کاربر آزمایشی اجرا کنید.
- اطلاعات حساس مانند Password را داخل CSV ذخیره نکنید.
- عملیات گروهی را در ساعات کمترافیک انجام دهید.
دستورات مرتبط
- New-ADUser
- Set-ADUser
- Remove-ADUser
- Add-ADGroupMember
- Get-ADUser
👥 مدیریت Group Membership در Active Directory
دستورات این بخش برای مدیریت اعضای گروههای امنیتی و توزیعی Active Directory استفاده میشوند.
🔹 Add-ADGroupMember
برای اضافه کردن کاربر یا کامپیوتر به یک گروه AD استفاده میشود.
Add-ADGroupMember -Identity "IT Admins" -Members user01
🔹 Remove-ADGroupMember
برای حذف عضو از گروه Active Directory استفاده میشود.
Remove-ADGroupMember -Identity "IT Admins" -Members user01
🔹 Get-ADGroupMember
برای مشاهده اعضای یک گروه AD استفاده میشود.
Get-ADGroupMember "Domain Admins"
🔹 Get-ADGroup
برای مشاهده اطلاعات گروههای Active Directory استفاده میشود.
Get-ADGroup -Filter *
🔹 New-ADGroup
برای ساخت گروه جدید در Active Directory استفاده میشود.
New-ADGroup -Name "HelpDesk" -GroupScope Global
💡 نکته:
مدیریت صحیح گروهها پایه اصلی Delegation و کنترل دسترسی در Active Directory است.
🔐 مدیریت OU و Delegation در Active Directory
Delegation Control برای واگذاری دسترسی مدیریتی محدود به کاربران یا تیمهای IT بدون دادن دسترسی Domain Admin استفاده میشود.
🔹 Get-Acl
برای مشاهده Permissionهای یک Object یا OU در Active Directory استفاده میشود.
Get-Acl "AD:\OU=Users,DC=company,DC=local"
🔹 Set-Acl
برای تغییر سطح دسترسی روی Objectهای Active Directory استفاده میشود.
Set-Acl -Path "AD:\OU=Users" -AclObject $acl
🔹 dsacls
ابزار خط فرمان برای مشاهده و تنظیم Permissionهای AD است.
dsacls "OU=Users,DC=company,DC=local"
🔹 Add-ADGroupMember
برای اضافه کردن مدیران یا کاربران Delegated به گروههای مدیریتی استفاده میشود.
Add-ADGroupMember -Identity "HelpDesk" -Members user01
🔹 Get-ADOrganizationalUnit
برای بررسی OUها و ساختار سازمانی Active Directory استفاده میشود.
Get-ADOrganizationalUnit -Filter *
💡 نکته مدیریتی:
- به کاربران Helpdesk دسترسی Domain Admin ندهید.
- Delegation را فقط روی OU موردنیاز اعمال کنید.
- مجوزها را دورهای بررسی و مستندسازی کنید.
⚙️ دستورات حرفهای و پیشرفته Active Directory
این دستورات برای جستجوی پیشرفته، عیبیابی، Migration و مدیریت سطح پایین Active Directory استفاده میشوند.
🔹 Get-ADObject
برای جستجوی هر نوع Object در Active Directory با Attributeهای مختلف استفاده میشود.
Get-ADObject -Filter *
🔹 LDAPFilter
برای اجرای Queryهای دقیق LDAP روی Active Directory استفاده میشود.
Get-ADUser -LDAPFilter "(department=IT)"
🔹 SearchBase
برای محدود کردن جستجو به یک OU یا مسیر مشخص استفاده میشود.
Get-ADUser -SearchBase "OU=Users,DC=company,DC=local"
🔹 ADSI
برای ارتباط مستقیم با سرویس Active Directory و مدیریت Attributeها استفاده میشود.
[ADSI]"LDAP://DC=company,DC=local"
🔹 repadmin
برای بررسی و مدیریت Replication بین Domain Controllerها استفاده میشود.
repadmin /replsummary
🔹 dcdiag
برای تست سلامت Domain Controller و سرویسهای AD استفاده میشود.
dcdiag /v
🔹 ntdsutil
ابزار مدیریتی سطح پایین برای تعمیر، نگهداری و عملیات خاص Active Directory است.
ntdsutil
🔹 Backup-GPO
برای تهیه نسخه پشتیبان از Group Policyها استفاده میشود.
Backup-GPO -Name "Security Policy" -Path C:\Backup
🔹 Restore-GPO
برای بازیابی GPO از Backup استفاده میشود.
Restore-GPO -Name "Security Policy" -Path C:\Backup
💡 نکته نهایی:
- قبل از تغییرات حساس AD همیشه Backup داشته باشید.
- Replication و DNS پایه سلامت Active Directory هستند.
- PowerShell Automation مدیریت AD را سریعتر و دقیقتر میکند.
✅ چکلیست نهایی مدیریت Active Directory و Group Policy
این بخش مجموعهای از مهمترین دستورات روزمره برای مدیران شبکه جهت نگهداری، بررسی سلامت و مدیریت سریع Active Directory و Group Policy است.
🔹 بررسی کاربران
نمایش کاربران، وضعیت حساب و آخرین زمان ورود.
Get-ADUser -Filter * -Properties LastLogonDate
🔹 بررسی کاربران غیرفعال
شناسایی حسابهایی که مدت طولانی استفاده نشدهاند.
Search-ADAccount -AccountInactive
🔹 بررسی Computerهای شبکه
مشاهده سیستمهای عضو Domain.
Get-ADComputer -Filter *
🔹 بررسی Group Policy اعمالشده
مشاهده Policyهای مؤثر روی سیستم کاربر.
gpresult /r
🔹 بروزرسانی فوری Policy
دریافت سریع تنظیمات جدید Group Policy.
gpupdate /force
🔹 بررسی سلامت Domain Controller
تست سرویسها و عملکرد DC.
dcdiag
🔹 بررسی Replication
بررسی وضعیت همگامسازی بین Domain Controllerها.
repadmin /replsummary
🔹 مشاهده FSMO Roleها
بررسی مالک Roleهای اصلی Active Directory.
netdom query fsmo
🔹 گزارشگیری GPO
ایجاد گزارش HTML از تنظیمات Policy.
Get-GPOReport -All -ReportType HTML -Path C:\GPO.html
📌 بهترین روشهای نگهداری Active Directory
- تهیه Backup منظم از GPOها
- بررسی دورهای کاربران غیرفعال
- مانیتورینگ Replication
- بررسی سلامت DNS
- محدود کردن دسترسی Domain Admin
- مستندسازی تغییرات AD
🏁 نتیجهگیری مقاله
Active Directory و Group Policy قلب مدیریت شبکههای ویندوزی هستند. تسلط بر PowerShell، دستورات مدیریتی AD و ابزارهای عیبیابی باعث افزایش امنیت، کاهش خطاهای انسانی و سادهتر شدن مدیریت زیرساخت سازمان میشود.
