Запросы на уровне экземпляра Cim выполняются быстрее, чем в PowerShell.
В своем коде вы получаете весь CimInstance, связанный с SoftwareLicensingProduct, и затем фильтруете их все (используя where-object) в Powershell, тогда как вы можете использовать параметр -filter
и фильтровать на уровне CimInstance, что быстрее.
Попробуйте это:
Get-CimInstance softwarelicensingproduct -filter 'Description LIKE "W%" AND LicenseStatus = 1' |
Select-Object -first 1 -ExpandProperty Description ) -replace '.*(VOLUME_MAK|OEM_SLP|RETAIL|OEM_COA_NSLP|OEM_COA_SLP).*', '$1'
Вы можете поиграться с параметром фильтра и получить более узкие результаты. Для получения дополнительной помощи по WQL и WMI