Get-WmiObject 是旧版 WMI cmdlet(PowerShell 2.0 起引入);推荐现代替换命令为 Get-CimInstance。 WMI 命名空间:root/cimv2;SoftwareLicensingProduct 类属于 Windows 软件许可子系统,查询操作系统、Office 等软件激活许可状态、产品 ID、许可应用 ID、激活状态。
Get-CimInstance 查询 root/cimv2 SoftwareLicensingProduct 拆解 解构
前置说明:
Get-CimInstance是 PowerShell 引入的CIM(Common Information Model)现代 cmdlet,用来替代老旧Get-WmiObject。底层基于 WMI over WS-Man(WinRM),本地模式可使用 DCOM 通道访问 WMI 提供程序,查询root/cimv2下SoftwareLicensingProduct许可类,读取 Windows、Office 等微软产品激活信息。
一、底层原理
- CIM 是 DMTF 标准模型,Windows WMI 是 CIM 的微软实现。
Get-CimInstance属于 PowerShell CIM cmdlet 家族,不再直接依赖 .NETSystem.Management(Get-WmiObject 使用),改用Microsoft.Management.Infrastructure(MI,Management Infrastructure)托管库。 - 执行命令
Get-CimInstance -Namespace root/cimv2 -ClassName SoftwareLicensingProduct:- 本地查询:MI 层通过 DCOM 连接
winmgmt.exeWMI 服务;远程查询默认走 WinRM (WS-Man)。 - WMI 服务接收请求,定位
SoftwareLicensingProduct,加载对应的 WMI 提供程序sppwmi.dll。 sppwmi.dll作为 SPP(Software Protection Platform)WMI 适配器,通过 RPC 和sppsvc.exe通信。- sppsvc 读取受保护的许可数据库,返回产品许可元数据,sppwmi 封装成 CIM 实例对象逐层返回给 PowerShell。
- 本地查询:MI 层通过 DCOM 连接
- 核心字段:
LicenseStatus、ApplicationID、ProductID、PartialProductKey、Name。
关键差异:
- Get-WmiObject:底层 System.Management,DCOM,WMI 专属
- Get-CimInstance:底层 MI 框架,支持 DCOM/WS-Man 双传输,遵循 CIM 标准,支持会话、超时、更好错误处理
二、依赖文件
| 文件 | 角色说明 |
|---|---|
powershell.exe |
PowerShell 主进程,解析命令,加载 PowerShell 引擎 |
System.Management.Automation.dll |
PowerShell 引擎,CIM cmdlet 定义 |
Microsoft.Management.Infrastructure.dll |
MI 核心托管库,Get-CimInstance 底层核心(替代 System.Management) |
Microsoft.Management.Infrastructure.Native.dll |
MI 原生底层库,DCOM/WS-Man 通道封装 |
winmgmt.exe |
WMI 服务进程,CIM/WMI 服务端,管理命名空间与提供程序加载 |
sppwmi.dll |
SPP WMI 提供程序,暴露SoftwareLicensingProduct/SoftwareLicensingService类 |
sppsvc.exe |
软件保护平台服务,许可数据库、激活校验逻辑主体 |
rpcrt4.dll |
RPC 运行库:sppwmi ↔ sppsvc 跨进程通信 |
ole32.dll |
COM 基础库,DCOM 对象实例化 |
wsmsvc.dll |
WinRM 服务库,远程 CIM 查询依赖(本地查询可不依赖) |
ntoskrnl.exe |
内核,进程管理、DCOM/RPC、对象管理 |
三、依赖关系
- PowerShell 调用
Get-CimInstance,加载Microsoft.Management.Infrastructure库,创建 CIM 会话(本地默认 DCOM 会话)。 - MI 库通过 DCOM 连接
winmgmt.exeWMI 服务,提交 CIM 查询请求,指定命名空间root/cimv2,类名SoftwareLicensingProduct。 - winmgmt 查找该 CIM 类对应的 WMI 提供程序,加载
sppwmi.dll。 - sppwmi 建立 RPC 客户端通道,向 sppsvc 请求许可产品列表与状态。
- sppsvc 读取
%SystemRoot%\System32\spp\store内受保护许可库,返回许可元数据。 - sppwmi 将数据封装为 WMI/CIM 实例,逐层回传给 winmgmt → MI 库 → PowerShell。
- PowerShell 格式化对象,输出结果到控制台。
重点:
Get-CimInstance不会直接读取 spp 数据库文件;sppsvc 独占许可存储。- 本地查询使用 DCOM;远程 CIM 查询默认切换为 WinRM(WS-Man),不再走 DCOM。
四、配套链
CIM / WMI 配套
- 命名空间:
root/cimv2 - CIM 模型:兼容 WMI 类定义,WMI 是微软 CIM 实现
- 核心底层接口:MI API(替代旧 IWbemServices)
- 提供程序:sppwmi.dll(SPP 专用 WMI 提供程序)
SPP 软件保护平台配套
- sppsvc.exe:SPP 服务,许可状态、激活校验主体
- spp.dll:SPP 核心业务库,sppsvc 加载
- sppwmi.dll:对外暴露 CIM/WMI 许可查询类
PowerShell CIM 配套
Get-CimInstance:查询 CIM 实例New-CimSession:自定义 CIM 会话,切换 DCOM/WS-Man、设置超时、凭证Get-CimClass:查看 CIM 类结构(查看 SoftwareLicensingProduct 字段定义)
注册表配套
WMI 提供程序注册信息:HKLM\SOFTWARE\Microsoft\WMI\Providers SPP 服务配置:HKLM\SYSTEM\CurrentControlSet\Services\sppsvc 许可数据库不在普通注册表,在 spp 受保护 store 目录,仅 sppsvc 可读写。
五、完整逻辑链路 Mermaid
flowchart TD
A[PowerShell Get-CimInstance] --> B[Microsoft.Management.Infrastructure.dll MI框架初始化]
B --> C[DCOM连接 winmgmt.exe WMI服务(本地)]
C --> D[winmgmt查找CIM类SoftwareLicensingProduct,加载 sppwmi.dll]
D --> E[sppwmi 通过RPC向 sppsvc 请求许可信息]
E --> F[sppsvc读取受保护许可数据库,返回产品许可元数据]
F --> G[sppwmi封装CIM实例,逐层回传]
G --> A[PowerShell输出许可对象:LicenseStatus / PartialProductKey等]
六、边界 & 硬约束
- 传输通道边界 本地:DCOM;远程主机默认 WS-Man(WinRM)。远程查询需要目标开启 WinRM、防火墙放行 5985(HTTP)/5986(HTTPS)端口;旧 WMI (Get-WmiObject) 远程依赖 DCOM 135 端口。
- 服务依赖边界
- Winmgmt 停止:CIM 查询 root/cimv2 全部失败
- sppsvc 停止:sppwmi 无法获取许可数据,返回空实例集合
- 权限边界 普通用户可执行读取许可状态;修改许可、触发激活、修改 spp 存储必须管理员权限。
- 只读类边界
SoftwareLicensingProduct是只读 CIM 类,不能用 CIM 命令修改激活状态;激活 / 重置许可需要调用 SPP 原生 API 或 slmgr.vbs。 - 结果过滤边界 返回大量条目(Windows、Office、残留未绑定许可),需要过滤,示例:
# 筛选已激活且包含部分密钥的条目
Get-CimInstance -Namespace root/cimv2 -ClassName SoftwareLicensingProduct | Where-Object { $_.LicenseStatus -eq 1 -and $_.PartialProductKey }
- 跨版本兼容边界
Get-CimInstance在 PowerShell 3.0 及以上版本可用;PowerShell7 跨平台版本,Windows 平台才支持 CIM/WMI,Linux/macOS 无 WMI/root/cimv2。 - 会话边界 支持 New-CimSession,可复用会话、设置超时;相比 Get-WmiObject,网络场景稳定性更强,支持更好的异常捕获。
- 虚拟化 / OEM 许可边界 虚拟机、OEM 预装系统,sppsvc 校验硬件信息;CIM 仅展示读取后的状态,不能绕过硬件绑定校验。
七、常见误区
❌ Get-CimInstance = Get-WmiObject,底层完全一样 ✅ 错误,上层用法相似,但底层库、传输层、错误模型完全不同,Get-CimInstance 基于 MI 框架。
❌ CIM 可以修改 SoftwareLicensingProduct 许可状态 ✅ 错误,仅只读查询;激活逻辑由 sppsvc 内部 API 完成。
❌ 远程 CIM 查询使用 DCOM ✅ 默认远程走 WinRM WS-Man,本地查询才使用 DCOM。
❌ 所有返回的实例都是当前系统正在使用的许可 ✅ 错误,会返回大量未关联、过期、遗留许可记录,需要按 LicenseStatus 过滤。
Get-WmiObject -query'select * from SoftwareLicensingProduct' 拆解 解构
前置说明:
Get-WmiObject是旧版 WMI cmdlet(PowerShell 2.0 起引入);推荐现代替换命令为Get-CimInstance。 WMI 命名空间:root/cimv2;SoftwareLicensingProduct类属于 Windows 软件许可子系统,查询操作系统、Office 等软件激活许可状态、产品 ID、许可应用 ID、激活状态。
一、底层原理
Get-WmiObject是 PowerShell 封装的 WMI 客户端,底层调用 WMI COM 接口IWbemServices,连接本地root/cimv2命名空间,执行 WQL 查询语句select * from SoftwareLicensingProduct。SoftwareLicensingProduct类的数据不是静态注册表读取,由sppsvc(Software Protection Platform,软件保护平台服务)维护。- sppsvc 维护内存 + 持久化的许可数据库,WMI 提供只读暴露接口;查询时,WMI 提供程序
sppwmi.dll从 sppsvc 获取许可数据,封装成 WMI 实例返回给 PowerShell。 - 返回字段典型:
Name(产品名称)、ApplicationID、ProductID、LicenseStatus(0 = 未授权,1 = 已授权,2 = 宽限期,3 = 挂起,4 = 非正版)、PartialProductKey(产品密钥后 5 位)。
区分:
- WMI:查询框架(wbemprox.dll/wbemcore.dll)
- sppwmi.dll:SPP 的 WMI 提供程序,把 sppsvc 许可数据暴露给 WMI
- sppsvc.exe:软件保护平台服务,许可数据库、激活逻辑主体
二、依赖文件
| 文件 | 角色说明 |
|---|---|
powershell.exe |
PowerShell 主进程,解析命令、加载 cmdlet |
System.Management.Automation.dll |
PowerShell 引擎,内置 WMI cmdlet 实现 |
System.Management.dll |
.NET WMI 托管包装库,Get-WmiObject底层依赖 |
wbemprox.dll |
WMI COM 代理,客户端连接 WMI 服务 |
wbemcore.dll |
WMI 核心组件,WQL 解析、查询调度 |
winmgmt.exe |
WMI 服务(Winmgmt,Windows Management Instrumentation),WMI 服务端 |
sppwmi.dll |
SPP WMI 提供程序,导出 SoftwareLicensingProduct 类,桥接 WMI ↔ sppsvc |
sppsvc.exe |
Software Protection Platform 软件保护平台服务,许可数据库、激活校验主体 |
rpcrt4.dll |
RPC 库,WMI 跨进程通信、sppwmi 与 sppsvc 通信 |
ole32.dll |
COM 基础库,WMI COM 对象实例化 |
ntoskrnl.exe |
内核,进程、RPC、对象管理 |
三、依赖关系
- PowerShell 执行
Get-WmiObject,加载System.Management.dll,初始化 WMI COM 客户端。 - COM 连接本地 Winmgmt(WMI 服务),提交 WQL 查询
select * from SoftwareLicensingProduct。 - Winmgmt 解析 WQL,定位类
SoftwareLicensingProduct,加载对应的 WMI 提供程序sppwmi.dll。 - sppwmi.dll 通过 RPC 向
sppsvc.exe请求许可产品列表、状态信息。 - sppsvc 读取内部许可数据库,返回产品许可元数据给 sppwmi。
- sppwmi 封装为 WMI 对象实例,逐层回传:Winmgmt → System.Management → PowerShell。
- PowerShell 格式化结果输出到控制台。
重点:
Get-WmiObject不直接读取许可数据库;sppsvc 才是许可数据的唯一可信来源。
四、配套链
WMI 配套
- 命名空间:
root/cimv2 - WQL:WMI 查询语言,类似 SQL,用于筛选 WMI 类实例
- 核心 WMI 接口:
IWbemServices、IEnumWbemClassObject
SPP 软件保护平台配套
- sppsvc.exe:Software Protection Platform 服务,维护许可、执行激活校验
- spp.dll:SPP 核心库,sppsvc 加载
- sppwmi.dll:SPP WMI 提供程序,对外暴露 WMI 类(SoftwareLicensingProduct / SoftwareLicensingService)
PowerShell 配套
Get-WmiObject:旧版 WMI cmdletGet-CimInstance:现代 CIM 替代命令(推荐,Get-CimInstance -ClassName SoftwareLicensingProduct)
注册表配套
许可核心数据库不在普通注册表,存储在受保护路径: %SystemRoot%\System32\spp\store,由 sppsvc 独占管理;普通用户无法直接读取。 WMI 类的元信息注册在 HKLM\SOFTWARE\Microsoft\WMI\Providers
五、完整逻辑链路 Mermaid
flowchart TD
A[PowerShell执行 Get-WmiObject WQL查询] --> B[System.Management.dll 初始化WMI COM客户端]
B --> C[RPC连接 winmgmt.exe WMI服务]
C --> D[Winmgmt解析WQL,查找SoftwareLicensingProduct提供程序]
D --> E[加载 sppwmi.dll SPP WMI提供程序]
E --> F[sppwmi RPC请求 sppsvc.exe 软件保护服务]
F --> G[sppsvc读取内部许可数据库,返回产品许可信息]
G --> H[sppwmi封装WMI实例,逐层回传]
H --> A[PowerShell输出许可列表、LicenseStatus、PartialProductKey]
六、边界 & 硬约束
- Get-WmiObject 弃用边界
Get-WmiObject是遗留 cmdlet,从 PowerShell 3.0 开始微软推荐CIM cmdlet(Get-CimInstance);PowerShell 7 中Get-WmiObject默认不可用。 - 服务依赖边界
- Winmgmt(WMI 服务)停止:所有 WMI 查询全部失败
- sppsvc 停止:sppwmi 无法获取许可数据,
SoftwareLicensingProduct返回空集合
- 权限边界 普通用户可以执行该查询,读取许可状态;修改许可、触发激活必须管理员权限。
- 数据只读边界
SoftwareLicensingProduct是只读 WMI 类,不能通过 WQL 写入 / 修改激活状态;激活操作必须调用 SPP 原生 API。 - 过滤边界 查询返回全部许可条目(很多未绑定、残留的许可记录);经常需要过滤:
WHERE LicenseStatus=1筛选真正已激活产品。 示例:
Get-WmiObject -query 'select * from SoftwareLicensingProduct where LicenseStatus=1 and PartialProductKey<>null'
- 多产品边界 一台系统会有多条 SoftwareLicensingProduct 实例:Windows 本身、Office、其它微软商业软件;不同产品 ApplicationID 相互独立。
- 远程查询边界
Get-WmiObject支持远程主机 WMI 查询,但远程 WMI 防火墙、DCOM 权限限制严格;远程查询 SoftwareLicensingProduct 需要目标主机 WMI+SPP 服务正常。 - 虚拟化边界 虚拟机、OEM 预装系统的许可绑定硬件;sppsvc 检测硬件信息,WMI 仅展示读取后的状态,不能绕过硬件校验。
七、常见误区
❌ Get-WmiObject 直接读取 spp 的数据库文件 ✅ 错误,通过 sppwmi → RPC → sppsvc 获取,sppsvc 独占数据库文件。
❌ WMI 可以修改激活状态 ✅ 错误,该 WMI 类仅用于查询;激活、重置许可要调用 SPP 原生 API 或 slmgr.vbs。
❌ 返回的所有条目都是当前在用的系统许可 ✅ 错误,会返回大量未关联、过期、残留许可,必须过滤 LicenseStatus。
Get-WmiObject -query 'select * from SoftwareLicensingProduct' 是一个 PowerShell 命令,它通过 Windows Management Instrumentation (WMI) 查询系统中关于软件许可的信息。
解释:
-
Get-WmiObject:- 这是 PowerShell 中的一个 cmdlet,用于查询和获取 WMI(Windows Management Instrumentation)数据。WMI 是 Windows 操作系统中用于管理硬件、操作系统和应用程序组件的一组标准接口。
-
-query:- 这个参数允许你直接提供一个 WQL(Windows Query Language)查询。WQL 是类似于 SQL 的查询语言,用于从 WMI 数据库中查询特定的信息。
-
'select * from SoftwareLicensingProduct':- 这是一个 WQL 查询,
select *表示选择所有的属性(字段),from SoftwareLicensingProduct表示查询与软件许可相关的所有产品信息。SoftwareLicensingProduct是一个 WMI 类,包含有关计算机上已安装的与软件许可相关的产品的信息(如操作系统、Office 软件等)。
- 这是一个 WQL 查询,
这个命令返回什么?
执行此命令后,PowerShell 会返回一个对象,其中包含系统上所有与软件许可相关的产品信息。这些信息包括:
- LicenseStatus(许可证状态):表示产品的许可证状态,如是否激活。
- ProductKeyID(产品密钥 ID):与软件产品的密钥相关的标识符。
- Name(名称):产品的名称,例如 Windows 操作系统或 Microsoft Office。
- Description(描述):产品的描述,通常是产品类型。
- Version(版本):产品的版本号。
- IsLicensed(是否已授权):指示该产品是否已成功激活并授权。
为什么会使用这个命令?
这个命令常用于以下场景:
- 查看软件许可证状态:系统管理员使用它来检查 Windows 操作系统或其他软件是否已激活,或者是否存在许可证问题。
- 软件资产管理:对于 IT 支持人员或系统管理员而言,查看系统中的所有已安装的授权软件信息非常重要,特别是确保软件许可符合合规性要求。
- 自动化和脚本:如果你在进行自动化任务或编写脚本时,需要定期检查软件许可证的状态,可以使用这个命令来获取相关信息。
示例输出:
执行该命令时,可能会看到类似以下内容:
Name : Windows Operating System
Description : Windows 10 Pro
LicenseStatus : 1
IsLicensed : True
在这个示例中,输出表示 Windows 10 Pro 操作系统已经被成功激活(IsLicensed 为 True),并且它的许可证状态(LicenseStatus)是 1,表示已激活。
Get-WmiObject -query 'select * from SoftwareLicensingProduct' 是一个查询 Windows 系统中与软件许可相关的产品的命令,常用于检查操作系统和其他软件的许可证状态、版本等信息,帮助管理员管理和监控软件的激活和合规性。
Get-WmiObject -query 'select * from SoftwareLicensingProduct'
| 中文名称 | 属性名 | 值 |
|---|---|---|
| 类型 | __GENUS | 2 |
| 类名 | __CLASS | SoftwareLicensingProduct |
| 超类 | __SUPERCLASS | |
| 家族 | __DYNASTY | SoftwareLicensingProduct |
| 相对路径 | __RELPATH | SoftwareLicensingProduct.ID="0b646350-5349-4013-b1be-4100d1a7fa38" |
| 属性计数 | __PROPERTY_COUNT | 61 |
| 派生 | __DERIVATION | {} |
| 服务器 | __SERVER | WIN-SIM65JFFMVQ |
| 命名空间 | __NAMESPACE | root\cimv2 |
| 路径 | __PATH | \WIN-SIM65JFFMVQ\root\cimv2:SoftwareLicensingProduct.ID="0b646350-5349-4013-b1be-4100d1a7fa38" |
| AD激活Csvlk产品ID | ADActivationCsvlkPid | |
| AD激活CsvlkSKU ID | ADActivationCsvlkSkuId | |
| AD激活对象DN | ADActivationObjectDN | |
| AD激活对象名称 | ADActivationObjectName | |
| 应用程序ID | ApplicationID | |
| 自动虚拟机激活主机数字PID2 | AutomaticVMActivationHostDigitalPid2 | |
| 自动虚拟机激活主机名称 | AutomaticVMActivationHostMachineName | |
| 自动虚拟机最后激活时间 | AutomaticVMActivationLastActivationTime | 16010101000000.000000-000 |
| 描述 | Description | Windows(R) Operating System, OEM_DM channel |
| 发现的KMS机器IP地址 | DiscoveredKeyManagementServiceMachineIpAddress | |
| 发现的KMS机器名称 | DiscoveredKeyManagementServiceMachineName | |
| 发现的KMS机器端口 | DiscoveredKeyManagementServiceMachinePort | 0 |
| 评估结束日期 | EvaluationEndDate | 16010101000000.000000-000 |
| 扩展宽限期 | ExtendedGrace | 4294967295 |
| 真实状态 | GenuineStatus | 1 |
| 宽限期剩余天数 | GracePeriodRemaining | 0 |
| IAID | IAID | |
| 标识符 | ID | |
| 是否为KMS服务器 | IsKeyManagementServiceMachine | 0 |
| KMS当前计数 | KeyManagementServiceCurrentCount | 4294967295 |
| KMS失败请求 | KeyManagementServiceFailedRequests | 4294967295 |
| KMS已授权请求 | KeyManagementServiceLicensedRequests | 4294967295 |
| KMS查找域 | KeyManagementServiceLookupDomain | |
| KMS机器 | KeyManagementServiceMachine | |
| KMS非正版宽限请求 | KeyManagementServiceNonGenuineGraceRequests | 4294967295 |
| KMS通知请求 | KeyManagementServiceNotificationRequests | 4294967295 |
| KMS OOB宽限请求 | KeyManagementServiceOOBGraceRequests | 4294967295 |
| KMS OOT宽限请求 | KeyManagementServiceOOTGraceRequests | 4294967295 |
| KMS端口 | KeyManagementServicePort | 0 |
| KMS产品密钥ID | KeyManagementServiceProductKeyID | |
| KMS总请求 | KeyManagementServiceTotalRequests | 4294967295 |
| KMS未授权请求 | KeyManagementServiceUnlicensedRequests | 4294967295 |
| 许可依赖于 | LicenseDependsOn | |
| 许可家族 | LicenseFamily | ServerDatacenter |
| 是否为附加许可 | LicenseIsAddon | False |
| 许可状态 | LicenseStatus | 0 |
| 许可状态原因 | LicenseStatusReason | 3221549076 |
| 机器URL | MachineURL | |
| 名称 | Name | Windows(R), ServerDatacenter edition |
| 离线安装ID | OfflineInstallationId | |
| 部分产品密钥 | PartialProductKey | |
| 处理器URL | ProcessorURL | |
| 产品密钥渠道 | ProductKeyChannel | |
| 产品密钥ID | ProductKeyID | |
| 产品密钥ID2 | ProductKeyID2 | |
| 产品密钥URL | ProductKeyURL | |
| 剩余应用重新武装次数 | RemainingAppReArmCount | 1001 |
| 剩余SKU重新武装次数 | RemainingSkuReArmCount | 4294967295 |
| 所需客户端计数 | RequiredClientCount | 4294967295 |
| 令牌激活附加信息 | TokenActivationAdditionalInfo | |
| 令牌激活证书指纹 | TokenActivationCertificateThumbprint | |
| 令牌激活授予编号 | TokenActivationGrantNumber | 4294967295 |
| 令牌激活ILID | TokenActivationILID | |
| 令牌激活ILVID | TokenActivationILVID | 4294967295 |
| 可信时间 | TrustedTime | 20250131110333.271000-000 |
| 使用许可证URL | UseLicenseURL | https://activation-v2.sls.microsoft.com/SLActivateProduct/SLActivateProduct.asmx?configextension=DM |
| 验证URL | ValidationURL | https://validation-v2.sls.microsoft.com/SLWGA/slwga.asmx |
| VL激活间隔 | VLActivationInterval | 120 |
| VL激活类型 | VLActivationType | 4294967295 |
| VL激活类型启用 | VLActivationTypeEnabled | 0 |
| VL更新间隔 | VLRenewalInterval | 10080 |
| PowerShell计算机名称 | PSComputerName | WIN- |
这样组织后的表格更加清晰,方便理解和使用。
Get-CimInstance SoftwareLicensingService
| 中文名称 | 字段名称 | 值 |
|---|---|---|
| Azure元数据响应 | AzureMetadataResponse | 4294967295 |
| 客户端机器ID | ClientMachineID | |
| 发现的密钥管理服务机器IP地址 | DiscoveredKeyManagementServiceMachineIpAddress | - |
| 发现的密钥管理服务机器名称 | DiscoveredKeyManagementServiceMachineName | - |
| 发现的密钥管理服务机器端口 | DiscoveredKeyManagementServiceMachinePort | 0 |
| 发出Windows计量器 | EmitWindowsMeter | 0 |
| 是否为密钥管理服务机器 | IsKeyManagementServiceMachine | 0 |
| 密钥管理服务当前计数 | KeyManagementServiceCurrentCount | 4294967295 |
| 密钥管理服务DNS发布 | KeyManagementServiceDnsPublishing | True |
| 密钥管理服务失败请求数量 | KeyManagementServiceFailedRequests | 4294967295 |
| 密钥管理服务主机缓存 | KeyManagementServiceHostCaching | True |
| 密钥管理服务已授权请求数量 | KeyManagementServiceLicensedRequests | 4294967295 |
| 密钥管理服务监听端口 | KeyManagementServiceListeningPort | 1688 |
| 密钥管理服务查找域 | KeyManagementServiceLookupDomain | - |
| 密钥管理服务低优先级 | KeyManagementServiceLowPriority | False |
| 密钥管理服务机器 | KeyManagementServiceMachine | - |
| 密钥管理服务非正版宽限请求数 | KeyManagementServiceNonGenuineGraceRequests | 4294967295 |
| 密钥管理服务通知请求数 | KeyManagementServiceNotificationRequests | 4294967295 |
| 密钥管理服务OOB宽限请求数 | KeyManagementServiceOOBGraceRequests | 4294967295 |
| 密钥管理服务OOT宽限请求数 | KeyManagementServiceOOTGraceRequests | 4294967295 |
| 密钥管理服务端口 | KeyManagementServicePort | 1688 |
| 密钥管理服务产品密钥ID | KeyManagementServiceProductKeyID | - |
| 密钥管理服务总请求数 | KeyManagementServiceTotalRequests | 4294967295 |
| 密钥管理服务未授权请求数 | KeyManagementServiceUnlicensedRequests | 4294967295 |
| OA2xBios标记次要版本 | OA2xBiosMarkerMinorVersion | 4294967295 |
| OA2xBios标记状态 | OA2xBiosMarkerStatus | 0 |
| OA3x原始产品密钥 | OA3xOriginalProductKey | - |
| OA3x原始产品密钥描述 | OA3xOriginalProductKeyDescription | - |
| OA3x原始产品密钥PKPn | OA3xOriginalProductKeyPkPn | - |
| 策略缓存刷新是否需要 | PolicyCacheRefreshRequired | 0 |
| 剩余Windows重置计数 | RemainingWindowsReArmCount | 1001 |
| 所需客户端数量 | RequiredClientCount | 4294967295 |
| 订阅版本 | SubscriptionEdition | UNKNOWN |
| 订阅过期时间 | SubscriptionExpiry | <unspecified> |
| 订阅状态 | SubscriptionStatus | 120 |
| 订阅类型 | SubscriptionType | 120 |
| 令牌激活附加信息 | TokenActivationAdditionalInfo | - |
| 令牌激活证书指纹 | TokenActivationCertificateThumbprint | - |
| 令牌激活授权编号 | TokenActivationGrantNumber | 4294967295 |
| 令牌激活ILID | TokenActivationILID | - |
| 令牌激活ILVID | TokenActivationILVID | 4294967295 |
| 操作系统版本 | Version | 10.0.26100.2894 |
| VL激活间隔 | VLActivationInterval | 4294967295 |
| VL续订间隔 | VLRenewalInterval | 4294967295 |
| 计算机名称 | PSComputerName | - |
此表格现在包括了中文名称、字段名称以及相应的值,便于理解和参考。


Windows PowerShell 还提供了其他多种方式来获取与软件授权、许可证和管理相关的信息。以下是一些常用的命令:
-
Get-WmiObject -Query 'select * from Win32_OperatingSystem'
- 获取操作系统的相关信息,包括版本、安装日期、产品密钥状态等。
powershellCopy CodeGet-WmiObject -Query 'select * from Win32_OperatingSystem' -
Get-WmiObject -Query 'select * from Win32_Product'
- 获取已安装的所有软件列表,包括软件名称、版本等信息。
powershellCopy CodeGet-WmiObject -Query 'select * from Win32_Product' -
Get-WmiObject -Query 'select * from SoftwareLicensingService'
- 获取与软件授权管理相关的信息。
powershellCopy CodeGet-WmiObject -Query 'select * from SoftwareLicensingService' -
Get-CimInstance -ClassName SoftwareLicensingService
- CIM (Common Information Model) 提供了一个现代化的获取系统信息的命令,可以代替
Get-WmiObject,获取软件授权服务信息。
powershellCopy CodeGet-CimInstance -ClassName SoftwareLicensingService - CIM (Common Information Model) 提供了一个现代化的获取系统信息的命令,可以代替
-
Get-WmiObject -Class Win32_ComputerSystem
- 获取计算机系统的硬件信息,包括计算机的型号、制造商等。
powershellCopy CodeGet-WmiObject -Class Win32_ComputerSystem -
Get-WmiObject -Class Win32_OperatingSystem
- 获取操作系统相关的信息,如名称、版本、已安装的更新等。
powershellCopy CodeGet-WmiObject -Class Win32_OperatingSystem -
Get-WmiObject -Query 'select * from SoftwareLicensingProduct where PartialProductKey != NULL'
- 查询所有有效的软件许可,筛选出有部分产品密钥的软件。
powershellCopy CodeGet-WmiObject -Query 'select * from SoftwareLicensingProduct where PartialProductKey != NULL' -
Get-CimInstance -ClassName Win32_OperatingSystem
- CIM 版本的
Win32_OperatingSystem类,获取操作系统的相关信息。
powershellCopy CodeGet-CimInstance -ClassName Win32_OperatingSystem - CIM 版本的
-
Get-CimInstance -ClassName Win32_Product
- CIM 版本的
Win32_Product类,获取已安装软件的信息。
powershellCopy CodeGet-CimInstance -ClassName Win32_Product - CIM 版本的
-
slmgr.vbs /dli
- 使用
slmgr.vbs脚本查看 Windows 激活状态以及许可证类型。命令行工具,适用于获取系统激活信息。
powershellCopy Codeslmgr.vbs /dli - 使用
这些命令都可以提供有关系统、操作系统和软件许可证的不同层面的信息,可以根据需要选择合适的命令来查询和管理软件授权或许可证。
使用 slmgr.vbs 命令
这是一个直接查询和管理 Windows 激活状态的工具。你可以使用以下命令检查激活状态:
slmgr.vbs /dli
该命令会显示关于当前系统许可证和激活的详细信息。
2. 使用 Get-WmiObject 查询 Win32_OperatingSystem
你也可以尝试查看操作系统的激活状态。虽然这不会显示详细的许可证信息,但可以获得一些有关系统激活的信息:
Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, ProductType, RegisteredUser, Status
这将显示当前操作系统的名称、类型、注册用户和激活状态。
3. 使用 Get-CimInstance 替代 Get-WmiObject
如果你更喜欢使用 CimInstance,它是 WmiObject 的更新版,可以尝试以下命令:
Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object Caption, ProductType, RegisteredUser, Status
如果仍然没有显示激活状态或许可证信息,可能需要根据操作系统版本或配置调整查询。
补充一些用于管理和查询Windows系统、软件授权以及许可证的PowerShell命令:
-
slmgr.vbs /xpr
- 用于查看当前系统是否永久激活。如果系统已永久激活,它会显示“Windows is activated permanently”。
powershellCopy Codeslmgr.vbs /xpr -
slmgr.vbs /ipk <product-key>
- 用于输入或更改Windows产品密钥。适用于激活Windows。
powershellCopy Codeslmgr.vbs /ipk <your-product-key> -
slmgr.vbs /ato
- 用于激活Windows操作系统。如果产品密钥已经正确输入,可以用此命令来激活Windows。
powershellCopy Codeslmgr.vbs /ato -
Get-WmiObject -Class Win32_OperatingSystem | Select-Object -Property Caption, ProductType, Version, BuildNumber
- 获取操作系统的详细信息,包括版本、产品类型(例如家庭版、专业版)、以及构建号等。
powershellCopy CodeGet-WmiObject -Class Win32_OperatingSystem | Select-Object -Property Caption, ProductType, Version, BuildNumber -
Get-WmiObject -Class Win32_ComputerSystem | Select-Object Manufacturer, Model, Name, TotalPhysicalMemory
- 获取计算机的硬件信息,包括制造商、型号、计算机名称以及物理内存总量。
powershellCopy CodeGet-WmiObject -Class Win32_ComputerSystem | Select-Object Manufacturer, Model, Name, TotalPhysicalMemory -
Get-WmiObject -Class Win32_SoftwareFeature
- 查询软件特征,这对于某些管理任务(如获取特定软件功能或包的安装状态)非常有用。
powershellCopy CodeGet-WmiObject -Class Win32_SoftwareFeature -
Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, InstallDate, OSArchitecture, ProductType
- 查看操作系统的安装日期、架构(例如64位或32位)、操作系统类型等详细信息。
powershellCopy CodeGet-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, InstallDate, OSArchitecture, ProductType -
Get-WmiObject -Class Win32_Volume
- 获取系统中所有磁盘分区的详细信息,如驱动器字母、大小、文件系统类型等。
powershellCopy CodeGet-WmiObject -Class Win32_Volume -
Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Select-Object Description, MACAddress, IPAddress
- 获取网络适配器的配置信息,包括描述、MAC地址和IP地址。
powershellCopy CodeGet-WmiObject -Class Win32_NetworkAdapterConfiguration | Select-Object Description, MACAddress, IPAddress -
Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property Caption, OSArchitecture, ServicePackMajorVersion
- 查询操作系统的名称、架构、服务包版本等信息。
powershellCopy CodeGet-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property Caption, OSArchitecture, ServicePackMajorVersion -
Get-WmiObject -Class Win32_SoftwareLicensingProduct | Where-Object {$_.LicenseStatus -eq 1}
- 查询所有已激活的软件许可证。
LicenseStatus -eq 1表示该软件许可证是有效的。
powershellCopy CodeGet-WmiObject -Class Win32_SoftwareLicensingProduct | Where-Object {$_.LicenseStatus -eq 1} - 查询所有已激活的软件许可证。
-
Get-CimInstance -ClassName Win32_Product | Select-Object Name, Version, InstallDate
- 获取已安装软件的名称、版本和安装日期信息,通常用于软件清单管理。
powershellCopy CodeGet-CimInstance -ClassName Win32_Product | Select-Object Name, Version, InstallDate -
Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property BuildNumber, OSArchitecture
- 获取操作系统的构建号和架构信息。
powershellCopy CodeGet-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property BuildNumber, OSArchitecture -
Get-WmiObject -Class Win32_BIOS
- 获取计算机的BIOS信息,包括版本、制造商、发布日期等。
powershellCopy CodeGet-WmiObject -Class Win32_BIOS
这些PowerShell命令和工具可以帮助你管理Windows系统中的硬件、软件、许可证和激活状态等信息。如果需要更细粒度的管理,还可以结合脚本来实现自动化任务或定期检查。

浙公网安备 33010602011771号