我试图找出使用WMI查询检查Windows许可证状态的最佳方法。查询应返回一行,指示许可证状态,并且我希望它尽可能通用,以便我可以在许多计算机和不同版本的操作系统上运行它。
到目前为止有以下一个:
SELECT LicenseStatus, Name, ApplicationID FROM SoftwareLicensingProduct
问题是它返回了很多行。例如,如果安装了Office,它也会包含在查询结果中,我也不知道如何限制结果。
答案 0 :(得分:0)
如果您最初没有坚持纯wmi
查询,请尝试下面给出的 CLI 命令,包括输出:
==>for /F "tokens=*" %G in ('where slmgr.vbs') do @cscript "%~G" /dli
Name: Windows(R), Core edition
Description: Windows(R) Operating System, OEM_COA_NSLP channel
Partial Product Key: ABCDE
License Status: Licensed
==>
现在你可以(在一个简单的.bat
脚本中)将它与
==>wmic path SoftwareLicensingProduct where "PartialProductKey='ABCDE'" get LicenseStatus, Name, ApplicationID, PartialProductKey, Description /value
ApplicationID=55c92734-d682-4d71-983e-d6ec3f16059f
Description=Windows(R) Operating System, OEM_COA_NSLP channel
LicenseStatus=1
Name=Windows(R), Core edition
PartialProductKey=ABCDE
==>
或者只需查看slmgr.vbs
即可查看 Microsoft 解决方案。