مقدمه
خروجی screenshot برای تصمیم ظرفیت کافی نیست. Inventory باید قابل مقایسه، timestampدار و با تمایز سختافزار فیزیکی و VM جمعآوری شود.
کدام ابزار برای کدام بررسی؟
| ابزار | کاربرد مناسب | محدودیت |
|---|---|---|
| CMD / systeminfo | نمای کلی OS، CPU و RAM در جلسه پشتیبانی | متن خروجی برای Inventory ساختاریافته مناسب نیست |
| PowerShell / CIM | Inventory قابل 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 نیز باید بررسی شوند.
منابع رسمی
- Microsoft: Get-CimInstance
- Microsoft: removed features
- Microsoft: WMIC deprecation and PowerShell replacement
تاریخ بررسی منابع: 2026-09-30. اعتبارسنجی عملی روی محیط هدف باید پیش از انتشار تغییر زیرساخت انجام شود.