مقدمه: چرا Group Policy هنوز ستون فقرات مدیریت شبکهست؟
اگه مقالات قبلی ما درباره عیبیابی اکتیو دایرکتوری و عیبیابی ویندوز ۱۱ رو خوندید، حتماً متوجه شدید که یه مبحث مهم بارها توی هر دو مقاله تکرار شده: Group Policy. از تنظیمات امنیتی گرفته تا محدودیتهای کاربران، نصب نرمافزار و پیکربندی شبکه — این ابزار قدیمی همهجا حضور داره.
خب، بذارید رُک و پوستکنده بگم: مشکلات Group Policy یکی از پرتکرارترین و در عین حال سردرگمکنندهترین تیکتهایی هستن که توی هلپ دسک باهاشون سر و کار داریم. کاربر زنگ میزنه و میگه «تنظیماتم عوض شده» یا «پالیسی فلان کار نمیکنه» یا «لاگین کردن خیلی طول میکشه». و شما باید از بین دهها GPO تو در تو، ریشه مشکل رو پیدا کنید. آسون نیست.
خبر خوب اینه که مایکروسافت در آپدیت فوریه ۲۰۲۶ ویندوز ۱۱، بهبودهای جدی در ابزارهای تشخیصی Group Policy ایجاد کرده — بهخصوص Event ID 1096 بهبودیافته که عیبیابی خطاهای registry.pol رو واقعاً سادهتر کرده. بعداً مفصل دربارهش صحبت میکنیم.
توی این مقاله، قدم به قدم یاد میگیرید چطور مشکلات Group Policy رو مثل یه تکنسین باتجربه عیبیابی کنید. پس بریم سراغش.
ابزارهای تشخیصی ضروری برای عیبیابی Group Policy
قبل از هر کاری، باید با ابزارهای اصلی آشنا باشید. هر کدوم از اینا یه تکه از پازل رو نشون میده و ترکیبشون تصویر کامل رو بهتون میده. من شخصاً هر روز از این ابزارها استفاده میکنم و بدون اغراق میگم بدونشون کارمون تقریباً غیرممکنه.
gpresult — مهمترین دستور عیبیابی
دستور gpresult اولین و مهمترین ابزار شماست. این دستور نتایج واقعی اعمال GPO روی یه کامپیوتر یا کاربر خاص رو نشون میده — یعنی دقیقاً میگه چه پالیسیهایی اعمال شدن و کدوما فیلتر شدن.
# نمایش خلاصه GPOهای اعمالشده (باید با دسترسی Admin اجرا بشه)
gpresult /R
# تولید گزارش HTML دقیق و خوانا
gpresult /H C:\Temp\gpo-report.html
# بررسی GPO برای یک کاربر خاص
gpresult /USER domain\username /R
# بررسی GPO روی یک کامپیوتر ریموت
gpresult /S WIN11-PC01 /R
# نمایش اطلاعات کامل و verbose
gpresult /Z
نکته مهم: اگه PowerShell یا Command Prompt رو بدون دسترسی Administrator اجرا کنید، فقط نتایج مربوط به کاربر رو میبینید و اطلاعات Computer Configuration نمایش داده نمیشه. همیشه — تأکید میکنم همیشه — با Run as Administrator کار کنید.
خروجی gpresult /R چند بخش کلیدی داره:
- Applied Group Policy Objects: لیست GPOهایی که با موفقیت اعمال شدن
- The following GPOs were not applied because they were filtered out: GPOهایی که فیلتر شدن — علتش هم مشخصه (مثلاً Denied یا Empty)
- Last time Group Policy was applied: زمان آخرین اعمال موفق GPO
- Group Policy was applied from: نام Domain Controller ای که GPO ازش دریافت شده
gpupdate — اجبار به بروزرسانی
تغییری توی GPO دادید و میخواید فوری اعمال بشه؟ نمیخواید ۹۰ دقیقه صبر کنید؟ این دستور دوست شماست:
# بروزرسانی اجباری همه پالیسیها
gpupdate /force
# فقط بروزرسانی Computer Configuration
gpupdate /target:computer /force
# فقط بروزرسانی User Configuration
gpupdate /target:user /force
یه تفاوت مهم: gpupdate بدون /force فقط پالیسیهایی رو بروزرسانی میکنه که تغییر کردن. ولی با /force همه پالیسیها — حتی اونایی که تغییری نکردن — دوباره اعمال میشن. برای عیبیابی، همیشه از /force استفاده کنید.
RSoP — نتایج نهایی پالیسیها
ابزار Resultant Set of Policy یه نمای گرافیکی از پالیسیهای نهایی اعمالشده ارائه میده:
# باز کردن RSoP Console
rsop.msc
RSoP شبیه Group Policy Editor هست ولی فقطخواندنیه و فقط پالیسیهای فعال رو نشون میده. صادقانه بگم، وقتی میخواید سریع ببینید یه تنظیم خاص از کدوم GPO اومده، این ابزار حسابی به درد میخوره.
Event Viewer — لاگهای عملیاتی Group Policy
Event Viewer یه بخش اختصاصی برای لاگهای Group Policy داره که خیلیها (حتی تکنسینهای باتجربه) ازش خبر ندارن:
مسیر: Applications and Services Logs → Microsoft → Windows → GroupPolicy → Operational
توی این لاگ میتونید ترتیب پردازش هر Client-Side Extension، زمان پردازش هر کدوم و خطاهای احتمالی رو ببینید. برای تشخیص مشکلات کندی لاگین، این لاگ طلاست.
مشکل شماره ۱: GPO اعمال نمیشه
بذارید صادق باشم — این رایجترین تیکتیه که درباره Group Policy دریافت میکنید. کاربر میگه «پالیسی فلان کار نمیکنه» و شما باید دهها احتمال رو بررسی کنید. بیاید یهیه بریم سراغشون.
۱. کامپیوتر یا کاربر در OU اشتباه قرار داره
سادهترین و البته رایجترین دلیل. آیا آبجکت (کاربر یا کامپیوتر) واقعاً توی OU ای هست که GPO بهش لینک شده؟
# بررسی OU کاربر
Get-ADUser -Identity "username" -Properties DistinguishedName | Select-Object DistinguishedName
# بررسی OU کامپیوتر
Get-ADComputer -Identity "PC-NAME" -Properties DistinguishedName | Select-Object DistinguishedName
باور کنید تعداد دفعاتی که مشکل GPO صرفاً با جابجایی OU حل شده رو نمیتونید تصور کنید. من خودم حداقل هفتهای یه بار این مورد رو میبینم. همیشه اول اینجا رو چک کنید.
۲. مشکل Security Filtering
بهصورت پیشفرض، GPO روی گروه Authenticated Users اعمال میشه. اگه کسی این رو حذف کرده و یه گروه خاص جایگزینش کرده، ممکنه کاربر یا کامپیوتر مورد نظر عضو اون گروه نباشه.
یه نکته حیاتی که خیلیها نمیدونن: حتی وقتی Security Filtering رو به یه گروه خاص محدود میکنید، باز هم گروه Domain Computers (یا Authenticated Users) باید دسترسی Read به GPO داشته باشه. بدون این دسترسی، کامپیوتر اصلاً نمیتونه GPO رو بخونه تا بفهمه باید اعمالش کنه یا نه. این نکته رو تجربه تلخ بهم یاد داد!
# بررسی ACL یک GPO خاص
Get-GPO -Name "GPO-Name" | Get-GPPermission -All | Format-Table Trustee, Permission, Inherited
۳. مشکل WMI Filter
WMI Filter ها میتونن اعمال GPO رو مشروط کنن — مثلاً فقط روی ویندوز ۱۱ یا فقط روی لپتاپها اعمال بشه. اگه فیلتر درست کار نکنه، GPO اعمال نمیشه و شما ساعتها دنبال دلیل دیگهای میگردید.
# بررسی WMI Filter لینکشده به GPO
Get-GPO -Name "GPO-Name" | Select-Object DisplayName, WmiFilter
# تست دستی WMI Query روی کامپیوتر
Get-WmiObject -Query "SELECT * FROM Win32_OperatingSystem WHERE Version LIKE '10.0.2%'"
۴. مشکل DNS
این موضوع رو قبلاً توی مقاله عیبیابی اکتیو دایرکتوری مفصل توضیح دادیم ولی تکرارش لازمه: اگه کلاینتها DNS سرور اشتباه رو استفاده کنن (مثلاً به جای DC به یه DNS عمومی مثل ۸.۸.۸.۸ اشاره کنن)، نمیتونن SYSVOL رو پیدا کنن و GPO دانلود نمیشه. سادهست ولی خیلیها فراموشش میکنن.
# بررسی DNS Configuration کلاینت
ipconfig /all | findstr "DNS"
# تست دسترسی به SYSVOL
dir \\domain.local\SYSVOL
۵. مشکل Secure Channel
وقتی رمز عبور ماشین اکانت کامپیوتر توی AD با رمز ذخیرهشده محلی هماهنگ نباشه، Secure Channel خراب میشه و کامپیوتر نمیتونه با DC احراز هویت کنه. نتیجه؟ GPO دریافت نمیشه.
# بررسی سلامت Secure Channel
Test-ComputerSecureChannel -Verbose
# تعمیر Secure Channel
Test-ComputerSecureChannel -Repair -Credential (Get-Credential)
مشکل شماره ۲: لاگین کند به خاطر پردازش GPO
از نظر من، این آزاردهندهترین مشکل از دید کاربره: سیستم هنگام لاگین چندین دقیقه روی پیام «Applying computer settings» یا «Applying user settings» گیر میکنه و کاربر فکر میکنه سیستمش خراب شده.
تشخیص: کدوم GPO باعث کندی شده؟
اول باید بفهمید دقیقاً کدوم GPO یا کدوم CSE بیشترین زمان رو میگیره:
# تولید گزارش HTML با جزئیات زمان پردازش هر GPO
gpresult /H C:\Temp\gpo-timing.html
توی گزارش HTML به بخش Component Status نگاه کنید. زمان پردازش هر Client-Side Extension اونجا مشخصه.
همچنین از Event Viewer مسیر GroupPolicy Operational استفاده کنید و این Event ID ها رو دنبال کنید:
- Event ID 4016: شروع پردازش Computer Policy
- Event ID 5016: پایان پردازش Computer Policy
- Event ID 4017: شروع پردازش User Policy
- Event ID 5017: پایان پردازش User Policy
تفاوت زمانی بین شروع و پایان، دقیقاً زمان پردازش GPO رو بهتون میده.
راهحلهای رایج
- تعداد GPO ها رو کم کنید: چند GPO کوچک رو ادغام کنید. تجربه نشون داده چند پالیسی جامع خیلی بهتر از دهها پالیسی ریز کار میکنه.
- WMI Filter های سنگین رو حذف کنید: WMI Filter ها هر بار ارزیابی میشن و اگه کوئری سنگینی داشته باشن، لاگین رو کند میکنن.
- Startup/Logon Script ها رو بهینه کنید: اسکریپتهایی که هنگام لاگین اجرا میشن گاهی فاجعهبار کندن. مطمئن بشید که بهینه هستن یا بهتره — اونا رو به Task Scheduler منتقل کنید.
- Slow Link Detection رو بررسی کنید: اگه کلاینت از طریق VPN یا WAN متصله و پهنای باند کمتر از ۵۰۰ کیلوبیتبرثانیه باشه، ویندوز بعضی CSE ها رو Skip میکنه. ولی خود فرایند تشخیص هم زمانبره.
فعال کردن Fast Logon Optimization
ویندوز یه قابلیت به اسم Fast Logon Optimization داره که پردازش GPO رو Asynchronous انجام میده — یعنی کاربر سریعتر به دسکتاپ میرسه و پالیسیها در پسزمینه اعمال میشن.
ولی یه نکته مهم: اگه Roaming Profile فعال باشه، این قابلیت خودکار غیرفعال میشه.
# بررسی وضعیت Fast Logon Optimization
# مسیر GPO: Computer Configuration > Administrative Templates > System > Logon
# تنظیم: "Always wait for the network at computer startup and logon"
# اگه Enabled باشه، Fast Logon غیرفعاله
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows NT\CurrentVersion\Winlogon" /v SyncForegroundPolicy
جدید در ۲۰۲۶: Event ID 1096 بهبودیافته
خب، این بخش رو با دقت بخونید چون به نظرم یکی از مهمترین تغییراتیه که مایکروسافت اخیراً برای تکنسینها ارائه داده. این بهبود در آپدیت فوریه ۲۰۲۶ برای ویندوز ۱۱ (نسخههای 24H2 و 25H2) اومده و مستقیماً کار عیبیابی رو راحتتر میکنه.
قبلاً چی بود؟
وقتی فایل registry.pol خراب میشد، Event ID 1096 فقط یه پیام کلی مثل «The processing of Group Policy failed» نشون میداد. تمام. هیچ اطلاعات مفیدی نداشت و مجبور بودید خودتون حدس بزنید مشکل از کجاست.
حالا چی شده؟
Event ID 1096 بهبودیافته اطلاعات دقیق و قابلاستفاده ارائه میده:
- FilePath: مسیر دقیق فایل
registry.polمشکلدار - GPO Container Name یا GUID: برای پیدا کردن GPO مشکلساز توی GPMC
- پیام خطای دقیق: مثلاً
Error during registry file parsing: CreateFile failed with 5(یعنی Access Denied) یاThe network path was not found(یعنی مشکل شبکه)
فرقش چقدره؟ به جای ساعتها حدس و گمان، ظرف چند ثانیه میفهمید مشکل از خرابی فایله، مشکل دسترسیه یا مشکل شبکهست. واقعاً یه تحول بزرگه.
چطور ازش استفاده کنیم؟
# مشاهده Event ID 1096 در Event Viewer
# مسیر: Windows Logs > System
# فیلتر: Source = Microsoft-Windows-GroupPolicy, Event ID = 1096
# یا با PowerShell:
Get-WinEvent -FilterHashtable @{
LogName = "System"
ProviderName = "Microsoft-Windows-GroupPolicy"
Id = 1096
} -MaxEvents 10 | Format-List TimeCreated, Message
توی تب Details رویداد، اطلاعات ساختاریافتهای هست که میتونید با ابزارهای مانیتورینگ مثل SCOM یا Windows Event Forwarding جمعآوری کنید.
حالتهای رایج خرابی registry.pol
- ویرایش دستی اشتباه: اگه کسی مستقیماً فایل registry.pol رو دستکاری کرده باشه
- نرمافزار Third-party: بعضی نرمافزارهای امنیتی یا مدیریتی (متأسفانه) فایل رو خراب میکنن
- خطای دیسک: بدسکتور یا خطاهای فایلسیستمی
- کرش سرویس GPSVC: اگه سرویس Group Policy Client حین نوشتن فایل کرش کنه
راهحل: فایل registry.pol خراب رو حذف کنید و gpupdate /force بزنید تا دوباره ساخته بشه:
# حذف registry.pol خراب مربوط به Computer Configuration
del "%windir%\System32\GroupPolicy\Machine\Registry.pol"
# حذف registry.pol خراب مربوط به User Configuration
del "%windir%\System32\GroupPolicy\User\Registry.pol"
# بازسازی با اجرای gpupdate
gpupdate /force
مشکلات SYSVOL Replication و تأثیرش روی GPO
GPO ها توی پوشه SYSVOL روی Domain Controller ها ذخیره میشن و بین DC ها Replicate میشن. حالا اگه این Replication مشکل داشته باشه — که متأسفانه بیشتر از اونی که فکر میکنید اتفاق میافته — کلاینتها نسخههای قدیمی یا ناقص GPO رو دریافت میکنن.
تشخیص مشکلات Replication
# بررسی وضعیت DFSR Replication
dcdiag /test:sysvolcheck /e
# بررسی نسخه GPO روی همه DC ها
repadmin /showrepl
# مقایسه محتوای SYSVOL بین دو DC
# DC1:
dir "\\DC1\SYSVOL\domain.local\Policies\{GPO-GUID}" /s
# DC2:
dir "\\DC2\SYSVOL\domain.local\Policies\{GPO-GUID}" /s
نشانههایی که Replication مشکل داره:
- یه GPO روی بعضی کامپیوترها کار میکنه و روی بعضی نه — این کلاسیکترین نشانهست
- تغییرات GPO با تأخیر غیرعادی اعمال میشن
- نسخه GPO توی
gpresultبا نسخهای که توی GPMC میبینید فرق داره
Loopback Processing: پیچیده ولی ضروری
بهصورت عادی، User Configuration از GPO هایی اعمال میشه که به OU کاربر لینک شدن. ولی گاهی نیاز دارید وقتی کاربر به یه کامپیوتر خاص لاگین میکنه (مثلاً سرور RDP یا کیوسک)، تنظیمات متفاوتی اعمال بشه.
اینجاست که Loopback Processing وارد صحنه میشه. دو حالت داره:
- Merge: تنظیمات User از OU کاربر + تنظیمات User از OU کامپیوتر هر دو اعمال میشن. در صورت تناقض، تنظیمات OU کامپیوتر برندهست.
- Replace: فقط تنظیمات User از OU کامپیوتر اعمال میشه و تنظیمات OU کاربر کلاً نادیده گرفته میشه.
نکته عیبیابی: اگه کاربری میگه تنظیماتش روی یه کامپیوتر خاص فرق میکنه، قبل از هر چیز Loopback Processing رو بررسی کنید:
# بررسی وضعیت Loopback Processing
gpresult /R | findstr "Loopback"
# یا در PowerShell
reg query "HKLM\SOFTWARE\Policies\Microsoft\Windows\System" /v UserPolicyMode
دستورات PowerShell پیشرفته برای مدیریت GPO
اگه با مقاله قبلیمون درباره Microsoft 365 همراه بودید و با PowerShell آشنایی دارید، وقتشه از این مهارت برای مدیریت Group Policy هم استفاده کنید. دستورات زیر رو همیشه دم دست داشته باشید.
# وارد کردن ماژول Group Policy
Import-Module GroupPolicy
# لیست تمام GPO ها
Get-GPO -All | Select-Object DisplayName, GpoStatus, CreationTime, ModificationTime | Sort-Object ModificationTime -Descending
# جستجوی یک تنظیم خاص در تمام GPO ها
$searchString = "Windows Update"
Get-GPO -All | ForEach-Object {
$gpoName = $_.DisplayName
$report = Get-GPOReport -Guid $_.Id -ReportType Xml
if ($report -match $searchString) {
Write-Output "Found in GPO: $gpoName"
}
}
# بکاپ از تمام GPO ها
Backup-GPO -All -Path "C:\GPO-Backup"
# بروزرسانی اجباری GPO روی کامپیوتر ریموت
Invoke-GPUpdate -Computer "WIN11-PC01" -Force -RandomDelayInMinutes 0
# تولید گزارش RSoP برای کاربر/کامپیوتر خاص
Get-GPResultantSetOfPolicy -User "domain\username" -Computer "domain\PC-NAME" -ReportType Html -Path "C:\Temp\rsop-report.html"
اسکریپت عیبیابی سریع GPO
این اسکریپت رو خودم خیلی استفاده میکنم. چندین بررسی رو یکجا انجام میده و خروجی خلاصهای از وضعیت GPO بهتون میده:
# اسکریپت عیبیابی سریع Group Policy
Write-Host "=== Group Policy Quick Diagnostic ===" -ForegroundColor Cyan
# 1. بررسی آخرین زمان اعمال GPO
Write-Host "`n[1] Last GP Application Time:" -ForegroundColor Yellow
gpresult /R 2>$null | Select-String "Last time Group Policy"
# 2. بررسی Secure Channel
Write-Host "`n[2] Secure Channel Status:" -ForegroundColor Yellow
Test-ComputerSecureChannel -Verbose
# 3. بررسی دسترسی به SYSVOL
Write-Host "`n[3] SYSVOL Access:" -ForegroundColor Yellow
$domain = (Get-WmiObject Win32_ComputerSystem).Domain
if (Test-Path "\\$domain\SYSVOL") {
Write-Host "SYSVOL accessible" -ForegroundColor Green
} else {
Write-Host "SYSVOL NOT accessible!" -ForegroundColor Red
}
# 4. بررسی سرویس Group Policy Client
Write-Host "`n[4] GPSVC Service Status:" -ForegroundColor Yellow
Get-Service gpsvc | Select-Object Status, StartType
# 5. بررسی Event ID 1096 (خطاهای اخیر)
Write-Host "`n[5] Recent GP Errors (Event 1096):" -ForegroundColor Yellow
Get-WinEvent -FilterHashtable @{LogName="System";Id=1096} -MaxEvents 5 -ErrorAction SilentlyContinue |
Format-Table TimeCreated, Message -Wrap
چکلیست عیبیابی Group Policy برای هلپ دسک
هر وقت تیکت مرتبط با Group Policy دریافت کردید، این مراحل رو به ترتیب طی کنید. این چکلیست رو یه جایی ذخیره کنید چون مرتب بهش نیاز پیدا میکنید:
- تأیید مشکل: دقیقاً چه تنظیمی کار نمیکنه؟ روی چه کامپیوتری؟ برای چه کاربری؟
- اجرای gpresult /R: آیا GPO مورد نظر اصلاً توی لیست Applied هست؟
- اگه GPO فیلتر شده: بررسی Security Filtering، WMI Filter و محل OU
- اگه GPO اعمال شده ولی کار نمیکنه: بررسی تداخل با GPO دیگه (یه GPO با اولویت بالاتر ممکنه تنظیم رو Override کنه)
- بررسی Event Viewer: لاگ GroupPolicy Operational و Event ID 1096
- بررسی DNS و Secure Channel: اتصال به DC سالمه؟
- تست SYSVOL: آیا محتوای SYSVOL قابل دسترسیه؟
- اجرای gpupdate /force: آیا بعد از Force Update مشکل حل میشه؟
- اگه مشکل فقط روی بعضی کامپیوترهاست: بررسی SYSVOL Replication بین DC ها
- مستندسازی: راهحل رو توی Knowledge Base ثبت کنید تا دفعه بعد سریعتر حل بشه
پرسشهای متداول (FAQ)
چرا بعد از gpupdate /force هنوز پالیسی اعمال نمیشه؟
چند دلیل رایج داره: اول مطمئن بشید که کاربر یا کامپیوتر توی OU درست قرار داره. دوم Security Filtering و WMI Filter رو بررسی کنید. سوم — و این مورد خیلیها رو غافلگیر میکنه — ممکنه پالیسی نیاز به Logoff/Logon یا Restart داشته باشه؛ بعضی تنظیمات فقط هنگام لاگین اعمال میشن نه هنگام Refresh. و چهارم: شاید یه GPO دیگه با اولویت بالاتر همون تنظیم رو Override میکنه.
تفاوت Computer Configuration و User Configuration چیه؟
Computer Configuration هنگام بوت سیستم اعمال میشه و هر ۹۰ دقیقه Refresh میشه. User Configuration هنگام لاگین کاربر اعمال میشه و اونم هر ۹۰ دقیقه Refresh میشه. پس اگه تنظیمی رو توی Computer Configuration قرار دادید ولی انتظار دارید فوری بعد از لاگین کاربر فعال بشه، احتمالاً نیاز به Restart دارید.
آیا Group Policy روی ویندوز ۱۱ Home کار میکنه؟
نه. Local Group Policy Editor فقط روی نسخههای Pro، Enterprise و Education ویندوز ۱۱ وجود داره. نسخه Home این ابزار رو نداره. بعضی هکها برای فعالسازیش توی Home وجود داره ولی پایدار نیستن و اصلاً توصیه نمیشن. بهترین راهحل ارتقا به Windows 11 Pro هست یا استفاده از ابزار جایگزینی مثل PolicyPlus.
چطور بفهمم کدوم GPO یه تنظیم خاص رو اعمال کرده؟
بهترین روش استفاده از gpresult /H report.html هست. توی گزارش HTML، هر تنظیم مشخص میکنه از کدوم GPO اومده. میتونید از RSoP (rsop.msc) هم استفاده کنید. برای جستجوی یه تنظیم خاص توی همه GPO ها، اسکریپت PowerShell بخش دستورات پیشرفته رو امتحان کنید.
Event ID 1096 بهبودیافته روی چه نسخههایی کار میکنه؟
فعلاً فقط روی ویندوز ۱۱ نسخههای 24H2 و 25H2 با آپدیت تجمعی فوریه ۲۰۲۶ یا جدیدتر. نسخههای قدیمیتر ویندوز ۱۱ و ویندوز ۱۰ همچنان Event ID 1096 قدیمی رو با اطلاعات محدود نشون میدن.