首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PowerShell Windows许可证类型

PowerShell Windows许可证类型
EN

Stack Overflow用户
提问于 2019-06-25 20:52:52
回答 2查看 418关注 0票数 1

我正在尝试拉取Windows许可证类型,我可以使用以下命令来完成,但它永远需要花费时间,有没有更快的PowerShell命令来完成这一点?

请参阅下面的代码,了解我尝试过的内容。

代码语言:javascript
复制
(Get-CimInstance SoftwareLicensingProduct |
    Where-Object -FilterScript { ($_.Description -like "W*" -and $_.licensestatus -eq 1 ) } |
        Select-Object -first 1 -ExpandProperty Description ) -replace '.*(VOLUME_MAK|OEM_SLP|RETAIL|OEM_COA_NSLP|OEM_COA_SLP).*', '$1'

我得到了预期的结果,但速度很慢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-25 21:14:21

Get-CimInstance有一个接受WQL查询过滤器的-Filter参数:

代码语言:javascript
复制
$SLP = Get-CimInstance SoftwareLicensingProduct -Filter 'Description LIKE "Windows%" AND LicenseStatus = 1'
$SLP.Description -replace '.*(VOLUME_MAK|OEM_SLP|RETAIL|OEM_COA_NSLP|OEM_COA_SLP).*', '$1'

这可能比让Get-CimInstance返回所有实例然后对其进行过滤更快。

您可能希望将VOLUME_KMSCLIENT添加到正则表达式模式:-)

票数 2
EN

Stack Overflow用户

发布于 2019-06-25 21:14:12

Cim实例级别的查询速度比PowerShell级别的查询速度快。

在您的代码中,您将获得与SoftwareLicensingProduct相关的整个对象,然后在Powershell中过滤它们(使用where- CimInstance ),而您可以在CimInstance级别使用-filter参数和过滤器,这会更快。

试试这个:

代码语言:javascript
复制
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'

您可以尝试使用filter参数,并获得更窄的结果。请在此处查看有关WQL and WMI的更多帮助

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56754546

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档