اگر نصب Role یا Feature در Windows Server با خطاهایی مثل 0x800F081F، 0x800F0818 یا 0x800F0922 شکست میخورد، ابتدا Error Code و لاگهای Server Manager/CBS/DISM را بررسی کنید. سپس سلامت Component Store را با DISM بسنجید؛ اگر Repairable بود RestoreHealth را اجرا کنید و بعد SFC /scannow بزنید. برای خطای «Source files could not be found» از ISO سازگار با همان نسخه و سطح بهروزرسانی Windows Server بهعنوان Repair Source استفاده کنید و Index صحیح WIM/ESD را قبل از اجرا مشخص کنید.
قبل از شروع: مشکل دقیقاً کجاست؟
شکست Add Roles and Features همیشه به معنی خرابی DISM نیست. مشکل میتواند از Component Store، فایلهای Source، Windows Update/WSUS، ناسازگاری Build منبع تعمیر یا خود Feature باشد. بنابراین مستقیم سراغ دستورهای Repair نروید؛ اول شواهد را جمع کنید.
- PowerShell یا Command Prompt را با Run as administrator باز کنید.
- روی سرور Production از تنظیمات و دادههای مهم Backup داشته باشید.
- Error Code و زمان دقیق آخرین نصب ناموفق را یادداشت کنید.
- اگر ISO استفاده میکنید، Edition، زبان، معماری و سطح Build/Update آن را با سرور تطبیق دهید.
مرحله ۱: Error Code و لاگ نصب Role/Feature را پیدا کنید
در Event Viewer بخشهای System و Setup و لاگهای مرتبط با Server Manager را بررسی کنید. برای دیدن Errorهای اخیر System میتوانید از PowerShell استفاده کنید:
Get-WinEvent -FilterHashtable @{LogName='System';Level=2;StartTime=(Get-Date).AddHours(-2)} |
Select-Object TimeCreated,Id,ProviderName,Message -First 30همزمان لاگهای Servicing را هم بررسی کنید:
C:\Windows\Logs\CBS\CBS.log
C:\Windows\Logs\DISM\dism.logبرای پیدا کردن خطاهای مهم CBS:
Select-String -Path "$env:windir\Logs\CBS\CBS.log" -Pattern "error","failed","corrupt","0x800f" |
Select-Object -Last 50خروجی مورد انتظار: باید Error Code یا Package/Component مشخصی پیدا کنید که زمان آن با تلاش ناموفق نصب مطابقت داشته باشد.
مرحله ۲: وضعیت Role یا Feature هدف را بررسی کنید
قبل از Repair مشخص کنید Feature واقعاً در چه وضعیتی است. برای مثال IIS:
Get-WindowsFeature -Name Web-Serverبرای مشاهده Featureهایی که نصب نیستند:
Get-WindowsFeature |
Where-Object InstallState -ne 'Installed' |
Select-Object Name,DisplayName,InstallStateاگر چند Role/Feature نامرتبط همزمان Fail میشوند، احتمال مشکل در Servicing یا Component Store بیشتر میشود؛ اگر فقط یک Feature مشکل دارد، لاگ همان Feature را دقیقتر بررسی کنید.
مرحله ۳: سلامت Component Store را با DISM بررسی کنید
ابتدا CheckHealth و سپس ScanHealth را اجرا کنید:
DISM /Online /Cleanup-Image /CheckHealth
DISM /Online /Cleanup-Image /ScanHealthCheckHealth سریع است و وضعیت ثبتشده خرابی را گزارش میکند. ScanHealth بررسی کاملتری انجام میدهد و ممکن است زمانبر باشد.
اگر پیام No component store corruption detected دریافت کردید: مشکل الزاماً از Component Store نیست و باید Source، WSUS/GPO و Error Code نصب را بررسی کنید.
اگر The component store is repairable دریافت کردید: مرحله بعد را انجام دهید.
مرحله ۴: Component Store را تعمیر کنید
DISM /Online /Cleanup-Image /RestoreHealthDISM بهطور پیشفرض میتواند برای دریافت فایلهای سالم از Repair Sourceهای تنظیمشده سیستم استفاده کند. اگر عملیات موفق بود، در پایان باید پیام موفقیت Repair را ببینید.
اگر DISM Fail شد، فایل زیر را با Timestamp همان اجرا بررسی کنید:
C:\Windows\Logs\DISM\dism.logمرحله ۵: بعد از DISM، فایلهای سیستمی را با SFC بررسی کنید
SFC /scannowاگر SFC فایل خراب پیدا و Repair کرد، در صورت نیاز سرور را در Maintenance Window ریاستارت کنید. سپس DISM ScanHealth را دوباره اجرا کنید تا وضعیت Component Store نیز Verify شود.
مرحله ۶: رفع خطای 0x800F081F و Source files could not be found
اگر RestoreHealth نمیتواند فایل منبع را پیدا کند، ISO سازگار Windows Server را Mount کنید. در مثال زیر ISO روی Drive D: قرار دارد.
ابتدا ببینید فایل نصب WIM است یا ESD:
Get-ChildItem D:\sources\install.*اگر install.wim دارید، Indexهای موجود را بخوانید:
Get-WindowsImage -ImagePath "D:\sources\install.wim" |
Select-Object ImageIndex,ImageNameEdition نصبشده سرور را هم بررسی کنید:
Get-ComputerInfo | Select-Object WindowsProductName,WindowsVersion,OsBuildNumberبعد Index متناظر را بهجای INDEX قرار دهید:
DISM /Online /Cleanup-Image /RestoreHealth /Source:WIM:D:\sources\install.wim:INDEX /LimitAccessاگر ISO دارای install.esd است:
Get-WindowsImage -ImagePath "D:\sources\install.esd" |
Select-Object ImageIndex,ImageName
DISM /Online /Cleanup-Image /RestoreHealth /Source:ESD:D:\sources\install.esd:INDEX /LimitAccess/LimitAccess باعث میشود DISM برای Repair به Windows Update مراجعه نکند. Index را حدس نزنید؛ انتخاب Edition اشتباه یکی از علتهای رایج شکست Repair است.
اگر Windows Server از WSUS استفاده میکند چه کنیم؟
در محیط Domain ممکن است منبع دریافت Repair Content توسط Group Policy و WSUS کنترل شود. قبل از تغییر Policy، تنظیم فعلی سازمان را ثبت کنید و بررسی کنید آیا سیستم اجازه دریافت Repair Content از منبع مورد انتظار را دارد. روی Production، WSUS یا GPO را صرفاً برای تست بدون برنامه Rollback تغییر ندهید.
اگر ISO سازگار در اختیار دارید، استفاده صریح از /Source همراه با /LimitAccess معمولاً مسیر تست واضحتری ایجاد میکند، چون منبع Repair مشخص است.
مرحله ۷: Role یا Feature را دوباره نصب و Verify کنید
برای مثال IIS:
Install-WindowsFeature -Name Web-Server -IncludeManagementToolsبعد وضعیت نصب را بخوانید:
Get-WindowsFeature -Name Web-ServerVerify نهایی:
DISM /Online /Cleanup-Image /ScanHealthخرابی Repairable گزارش نکند.SFC /scannowخرابی حلنشده نداشته باشد.- Role/Feature هدف با وضعیت Installed نمایش داده شود.
- Event Viewer در زمان نصب مجدد خطای مرتبط تازه ثبت نکند.
- اگر Role سرویس ایجاد میکند، خود سرویس و عملکرد واقعی آن نیز تست شود.
خطاهای رایج هنگام تعمیر DISM
- 0x800F081F: Source پیدا نشده یا Repair Source با سیستم سازگار نیست؛ مسیر، WIM/ESD، Index و نسخه ISO را بررسی کنید.
- 0x800F0818: معمولاً باید CBS.log را برای Package یا Payload ناسازگار بررسی کنید؛ صرفاً با تکرار RestoreHealth مشکل را حدس نزنید.
- 0x800F0922: علت واحدی ندارد؛ CBS.log، DISM.log و Event Viewer را با Timestamp همان عملیات بررسی کنید.
- DISM ظاهراً روی یک درصد مانده: صرفاً به دلیل چند دقیقه توقف ظاهری Process را Kill نکنید؛ فعالیت سیستم و DISM.log را بررسی کنید.
- Repair Source اشتباه: ISO نامرتبط، Edition اشتباه یا منبع قدیمی میتواند Repair را Fail کند.
Rollback و Recovery
CheckHealth و ScanHealth تشخیصی هستند، اما RestoreHealth Component Store را تغییر میدهد و Undo سادهای ندارد. به همین دلیل Backup و Repair Source صحیح مهماند. ISO را پس از پایان کار Eject کنید. اگر برای عیبیابی GPO یا WSUS را تغییر دادید، تنظیمات ثبتشده قبلی را برگردانید و دوباره Policy را اعمال و Verify کنید.
سوالات رایج
برای خطای 0x800F081F اول SFC اجرا کنم یا DISM؟
وقتی مشکل به Component Store یا Repair Source مربوط است، ابتدا DISM را برای بررسی و Repair Image اجرا کنید و سپس SFC را برای بررسی فایلهای محافظتشده سیستم اجرا کنید.
آیا هر ISO ویندوز سروری برای DISM مناسب است؟
خیر. Repair Source باید با سیستم هدف سازگار باشد. Edition، زبان، معماری و سطح Build/Update را بررسی کنید و Index مناسب WIM یا ESD را انتخاب کنید.
اگر DISM بگوید Component Store سالم است ولی Feature نصب نمیشود چه کنم؟
Error Code، CBS.log، Event Viewer، منبع Feature و سیاستهای WSUS/GPO را بررسی کنید. سالم بودن Component Store همه علتهای شکست نصب Role یا Feature را رد نمیکند.
اگر مشکل نصب Role یا Feature هنوز برطرف نشد
اگر بعد از تعمیر Component Store همچنان نصب Role یا Feature در Windows Server خطا میدهد، Error Code جدید را دوباره با CBS.log و DISM.log تطبیق دهید. در مشکلاتی که به کمبود منابع یا کندی سیستم مربوط میشوند، راهنمای عیبیابی کندی Windows Server میتواند مرحله بعدی عیبیابی باشد. اگر خطا مربوط به سرویسهای شبکه است، روشهای رفع مشکل DNS در Windows Server و رفع مشکل DHCP در Windows Server را بررسی کنید.
برای اجرای Windows Server روی زیرساخت مستقل نیز میتوانید مشخصات سرور مجازی وانسرور را براساس CPU، RAM و فضای ذخیرهسازی موردنیاز سرویس انتخاب کنید.
منابع رسمی
- Microsoft Learn — Troubleshoot installing features and roles
- Microsoft Learn — Repair a Windows Image
- Microsoft Learn — Configure a Windows Repair Source
- Microsoft Learn — Get-WindowsImage