بازیابی از بحران

مرجع کامل دستورات اکتیودایرکتوری و گروپ پالیسی

مرجع کامل دستورات اکتیودایرکتوری و گروپ پالیسی

📘 مرجع کامل دستورات 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برای ایجاد کاربر جدید در اکتیودایرکتوری استفاده می‌شود.

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برای ویرایش مشخصات کاربران دامنه استفاده می‌شود.

Set-ADUser Ali -Department IT

نمونه تغییر ایمیل

Set-ADUser Ali -EmailAddress ali@company.com

نمونه تغییر شماره تلفن

Set-ADUser Ali -OfficePhone "021123456"

❌ Remove-ADUserحذف کاربران از Active Directory

Remove-ADUser Ali

هشدار امنیتی

قبل از حذف کاربران، از Active Directory Backup تهیه کنید.


🔓 Unlock-ADAccountباز کردن حساب کاربری قفل شده

Unlock-ADAccount Ali

🔍 Search-ADAccountجستجوی حساب‌های غیرفعال، قفل شده یا منقضی شده

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 *
💡 استفاده از -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

🛠️ دستورات عیب‌یابی 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 و ابزارهای عیب‌یابی باعث افزایش امنیت، کاهش خطاهای انسانی و ساده‌تر شدن مدیریت زیرساخت سازمان می‌شود.

5/5 - (1 امتیاز)