مقدمه

خروجی screenshot برای تصمیم ظرفیت کافی نیست. Inventory باید قابل مقایسه، timestampدار و با تمایز سخت‌افزار فیزیکی و VM جمع‌آوری شود.

کدام ابزار برای کدام بررسی؟

ابزارکاربرد مناسبمحدودیت
CMD / systeminfoنمای کلی OS، CPU و RAM در جلسه پشتیبانیمتن خروجی برای Inventory ساختاریافته مناسب نیست
PowerShell / CIMInventory قابل Automation و خروجی JSONدقت اطلاعات به Provider و مجوز وابسته است
DxDiagبررسی DirectX، گرافیک، صدا و Driverجایگزین CMDB یا وضعیت RAID نیست

CMD یک Shell است، نه API سخت‌افزار؛ ابزار اجراشده در آن منبع اطلاعات را تعیین می‌کند. WMIC در نسخه‌های جدید Windows ممکن است حذف یا غیرفعال باشد؛ برای Automation جدید از CIM استفاده کنید. روی Server Core وجود DxDiag را فرض نکنید.

مثال عملی

قبل از ارتقای fleet، مدل BIOS، core و RAM سرورها با inventory سازمان مقایسه می‌شود. serial موجود در VM الزاماً serial chassis نیست.

پیش‌نیازها

Windows Server 2022/2025 یا Windows 11، Windows PowerShell 5.1 x64؛ برای cmdletهای Server نقش و ماژول مربوط لازم است.

سخت‌افزار و ظرفیت: میزبان مجاز موجود؛ ابزارهای تشخیصی به سخت‌افزار اضافه نیاز ندارند. برای VM آزمایشگاهی ۲ vCPU، ۴ GiB RAM و ۶۰ GiB دیسک در نظر بگیرید.

نرم‌افزار و دسترسی: PowerShell x64، CimCmdlets و Storage؛ خواندن local با دسترسی عادی، remote با حساب delegated و WinRM امن. DxDiag برای Desktop Experience است.

Architecture / Design

CIM/Storage providers → snapshot JSON → CMDB → مقایسه baseline. DxDiag فقط برای مشکل گرافیک و DirectX client مناسب است؛ ظرفیت GPU حرفه‌ای از ابزار vendor تأیید می‌شود.

Installation / Configuration

اسکریپت کامل read-only را در Windows PowerShell 5.1 x64 اجرا کنید. محل خروجی در TEMP کاربر است؛ اگر policy سازمان اجازه ندهد با مسیر مجاز جایگزین کنید.

$ErrorActionPreference = 'Stop'
$InventoryPath = Join-Path $env:TEMP ('Inventory-' + (Get-Date -Format 'yyyyMMdd-HHmmss') + '.json')
$Inventory = [ordered]@{
    CollectedUtc = [DateTime]::UtcNow.ToString('o')
    Computer = Get-CimInstance Win32_ComputerSystem | Select-Object Name,Manufacturer,Model,TotalPhysicalMemory
    OS = Get-CimInstance Win32_OperatingSystem | Select-Object Caption,Version,BuildNumber,LastBootUpTime
    CPU = @(Get-CimInstance Win32_Processor | Select-Object Name,NumberOfCores,NumberOfLogicalProcessors)
    Memory = @(Get-CimInstance Win32_PhysicalMemory | Select-Object Manufacturer,PartNumber,Capacity,Speed)
    BIOS = Get-CimInstance Win32_BIOS | Select-Object Manufacturer,SMBIOSBIOSVersion,SerialNumber
    Disks = @(Get-PhysicalDisk | Select-Object FriendlyName,MediaType,Size,HealthStatus)
    Video = @(Get-CimInstance Win32_VideoController | Select-Object Name,DriverVersion)
}
$Inventory | ConvertTo-Json -Depth 6 | Set-Content -LiteralPath $InventoryPath -Encoding UTF8
Get-Content -LiteralPath $InventoryPath -Raw | ConvertFrom-Json | Select-Object CollectedUtc,Computer
Get-FileHash -LiteralPath $InventoryPath -Algorithm SHA256

خروجی JSON شامل timestamp UTC و objectهای مشخص است؛ Capacity و Size برحسب byte هستند. برای GiB بر 1GB در PowerShell تقسیم کنید. serial و model را با CMDB و کنسول vendor تأیید کنید. DxDiag فقط در سیستم دارای GUI و binary مربوط اجرا شود؛ مسیر گزارش باید موجود و نوشتنی باشد.

Security Hardening

Serial، hostname و inventory توپولوژی سازمان را افشا می‌کنند؛ فایل به share عمومی نرود. remote CIM از session مجاز با least privilege و WinRM TLS/Kerberos استفاده کند؛ Basic بدون TLS فعال نشود.

Monitoring

به‌جای alert روی هر inventory، تغییر غیرمجاز RAM/BIOS و health دیسک بررسی شود. Zabbix برای سلامت و CMDB برای مالکیت دارایی استفاده شوند. HealthStatus سالم به معنی SMART کامل یا سلامت RAID controller نیست.

Troubleshooting

CIM null در VM می‌تواند محدودیت provider باشد؛ مقدار Unknown را با صفر واقعی یکی نکنید. Get-PhysicalDisk ممکن است دیسک پشت RAID را abstract ببیند؛ خروجی vendor controller معیار مکمل است. DxDiag روی Server Core ممکن است موجود نباشد؛ این خطای اجرای inventory سرور نیست. access denied در remote یعنی session/permission بررسی شود، نه غیرفعال‌کردن firewall.

Backup / Recovery

Inventory state سرویس را تغییر نمی‌دهد؛ JSON و hash با retention نگهداری شوند. برای recovery سخت‌افزار علاوه بر inventory، firmware، driver، config RAID و backup کاربردی لازم است. serial به‌تنهایی restore procedure نیست.

Best Practices

از CIM برای automation و tool vendor برای telemetry اختصاصی استفاده کنید. API کم‌دقت AdapterRAM را برای GPU جدید معیار ظرفیت نگذارید.

نسخه‌های قدیمی و Compatibility

WMIC deprecated است و موجودبودن آن در یک میزبان تضمین fleet نیست. این script از CIM استفاده می‌کند. Server Core و workstation گرافیکی scopeهای متفاوت دارند.

پرسش‌های متداول

آیا DxDiag ابزار مناسب همه سرورهاست؟

خیر؛ برای گرافیک و DirectX است و روی Server Core ممکن است موجود نباشد.

آیا HealthStatus سالم سلامت RAID را تضمین می‌کند؟

خیر؛ telemetry کنترلر و ابزار vendor نیز باید بررسی شوند.

منابع رسمی

تاریخ بررسی منابع: 2026-09-30. اعتبارسنجی عملی روی محیط هدف باید پیش از انتشار تغییر زیرساخت انجام شود.

Share