使用 WMI 查询检查 Windows 许可证状态的最佳方法是什么
What is the best way to check Windows License Status using WMI query
我正在尝试找出使用 WMI 查询检查 Windows 许可证状态的最佳方法。查询应该 return 一行指示许可证状态,我希望它尽可能通用,以便我可以 运行 它在许多计算机和不同版本的操作系统上。
目前有以下一个:
SELECT LicenseStatus, Name, ApplicationID FROM SoftwareLicensingProduct
问题是它 return 有很多行。例如,如果安装了 Office,它也会包含在查询结果中,我不知道如何限制结果。
如果您最初不坚持纯 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 解决方案。
我正在尝试找出使用 WMI 查询检查 Windows 许可证状态的最佳方法。查询应该 return 一行指示许可证状态,我希望它尽可能通用,以便我可以 运行 它在许多计算机和不同版本的操作系统上。
目前有以下一个:
SELECT LicenseStatus, Name, ApplicationID FROM SoftwareLicensingProduct
问题是它 return 有很多行。例如,如果安装了 Office,它也会包含在查询结果中,我不知道如何限制结果。
如果您最初不坚持纯 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 解决方案。