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 等微软产品激活信息。

一、底层原理

  1. CIM 是 DMTF 标准模型,Windows WMI 是 CIM 的微软实现。Get-CimInstance 属于 PowerShell CIM cmdlet 家族,不再直接依赖 .NET System.Management(Get-WmiObject 使用),改用 Microsoft.Management.Infrastructure(MI,Management Infrastructure)托管库。
  2. 执行命令 Get-CimInstance -Namespace root/cimv2 -ClassName SoftwareLicensingProduct:
    • 本地查询:MI 层通过 DCOM 连接 winmgmt.exe WMI 服务;远程查询默认走 WinRM (WS-Man)。
    • WMI 服务接收请求,定位 SoftwareLicensingProduct,加载对应的 WMI 提供程序 sppwmi.dll。
    • sppwmi.dll 作为 SPP(Software Protection Platform)WMI 适配器,通过 RPC 和sppsvc.exe通信。
    • sppsvc 读取受保护的许可数据库,返回产品许可元数据,sppwmi 封装成 CIM 实例对象逐层返回给 PowerShell。
  3. 核心字段: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、对象管理

三、依赖关系

  1. PowerShell 调用 Get-CimInstance,加载 Microsoft.Management.Infrastructure 库,创建 CIM 会话(本地默认 DCOM 会话)。
  2. MI 库通过 DCOM 连接 winmgmt.exe WMI 服务,提交 CIM 查询请求,指定命名空间root/cimv2,类名SoftwareLicensingProduct。
  3. winmgmt 查找该 CIM 类对应的 WMI 提供程序,加载 sppwmi.dll。
  4. sppwmi 建立 RPC 客户端通道,向 sppsvc 请求许可产品列表与状态。
  5. sppsvc 读取 %SystemRoot%\System32\spp\store 内受保护许可库,返回许可元数据。
  6. sppwmi 将数据封装为 WMI/CIM 实例,逐层回传给 winmgmt → MI 库 → PowerShell。
  7. 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等]

六、边界 & 硬约束

  1. 传输通道边界 本地:DCOM;远程主机默认 WS-Man(WinRM)。远程查询需要目标开启 WinRM、防火墙放行 5985(HTTP)/5986(HTTPS)端口;旧 WMI (Get-WmiObject) 远程依赖 DCOM 135 端口。
  2. 服务依赖边界
  • Winmgmt 停止:CIM 查询 root/cimv2 全部失败
  • sppsvc 停止:sppwmi 无法获取许可数据,返回空实例集合
  1. 权限边界 普通用户可执行读取许可状态;修改许可、触发激活、修改 spp 存储必须管理员权限。
  2. 只读类边界SoftwareLicensingProduct 是只读 CIM 类,不能用 CIM 命令修改激活状态;激活 / 重置许可需要调用 SPP 原生 API 或 slmgr.vbs。
  3. 结果过滤边界 返回大量条目(Windows、Office、残留未绑定许可),需要过滤,示例:
# 筛选已激活且包含部分密钥的条目
Get-CimInstance -Namespace root/cimv2 -ClassName SoftwareLicensingProduct | Where-Object { $_.LicenseStatus -eq 1 -and $_.PartialProductKey }
  1. 跨版本兼容边界Get-CimInstance 在 PowerShell 3.0 及以上版本可用;PowerShell7 跨平台版本,Windows 平台才支持 CIM/WMI,Linux/macOS 无 WMI/root/cimv2。
  2. 会话边界 支持 New-CimSession,可复用会话、设置超时;相比 Get-WmiObject,网络场景稳定性更强,支持更好的异常捕获。
  3. 虚拟化 / 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、激活状态。

一、底层原理

  1. Get-WmiObject 是 PowerShell 封装的 WMI 客户端,底层调用 WMI COM 接口 IWbemServices,连接本地 root/cimv2 命名空间,执行 WQL 查询语句 select * from SoftwareLicensingProduct。
  2. SoftwareLicensingProduct 类的数据不是静态注册表读取,由 sppsvc(Software Protection Platform,软件保护平台服务)维护。
  3. sppsvc 维护内存 + 持久化的许可数据库,WMI 提供只读暴露接口;查询时,WMI 提供程序 sppwmi.dll 从 sppsvc 获取许可数据,封装成 WMI 实例返回给 PowerShell。
  4. 返回字段典型: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、对象管理

三、依赖关系

  1. PowerShell 执行Get-WmiObject,加载System.Management.dll,初始化 WMI COM 客户端。
  2. COM 连接本地 Winmgmt(WMI 服务),提交 WQL 查询 select * from SoftwareLicensingProduct。
  3. Winmgmt 解析 WQL,定位类 SoftwareLicensingProduct,加载对应的 WMI 提供程序 sppwmi.dll。
  4. sppwmi.dll 通过 RPC 向 sppsvc.exe 请求许可产品列表、状态信息。
  5. sppsvc 读取内部许可数据库,返回产品许可元数据给 sppwmi。
  6. sppwmi 封装为 WMI 对象实例,逐层回传:Winmgmt → System.Management → PowerShell。
  7. 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 cmdlet
  • Get-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]

六、边界 & 硬约束

  1. Get-WmiObject 弃用边界Get-WmiObject 是遗留 cmdlet,从 PowerShell 3.0 开始微软推荐CIM cmdlet(Get-CimInstance);PowerShell 7 中Get-WmiObject默认不可用。
  2. 服务依赖边界
  • Winmgmt(WMI 服务)停止:所有 WMI 查询全部失败
  • sppsvc 停止:sppwmi 无法获取许可数据,SoftwareLicensingProduct返回空集合
  1. 权限边界 普通用户可以执行该查询,读取许可状态;修改许可、触发激活必须管理员权限。
  2. 数据只读边界SoftwareLicensingProduct 是只读 WMI 类,不能通过 WQL 写入 / 修改激活状态;激活操作必须调用 SPP 原生 API。
  3. 过滤边界 查询返回全部许可条目(很多未绑定、残留的许可记录);经常需要过滤:WHERE LicenseStatus=1 筛选真正已激活产品。 示例:
Get-WmiObject -query 'select * from SoftwareLicensingProduct where LicenseStatus=1 and PartialProductKey<>null'
  1. 多产品边界 一台系统会有多条 SoftwareLicensingProduct 实例:Windows 本身、Office、其它微软商业软件;不同产品 ApplicationID 相互独立。
  2. 远程查询边界Get-WmiObject支持远程主机 WMI 查询,但远程 WMI 防火墙、DCOM 权限限制严格;远程查询 SoftwareLicensingProduct 需要目标主机 WMI+SPP 服务正常。
  3. 虚拟化边界 虚拟机、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) 查询系统中关于软件许可的信息。

解释:

  1. Get-WmiObject:

    • 这是 PowerShell 中的一个 cmdlet,用于查询和获取 WMI(Windows Management Instrumentation)数据。WMI 是 Windows 操作系统中用于管理硬件、操作系统和应用程序组件的一组标准接口。
  2. -query:

    • 这个参数允许你直接提供一个 WQL(Windows Query Language)查询。WQL 是类似于 SQL 的查询语言,用于从 WMI 数据库中查询特定的信息。
  3. 'select * from SoftwareLicensingProduct':

    • 这是一个 WQL 查询,select * 表示选择所有的属性(字段),from SoftwareLicensingProduct 表示查询与软件许可相关的所有产品信息。SoftwareLicensingProduct 是一个 WMI 类,包含有关计算机上已安装的与软件许可相关的产品的信息(如操作系统、Office 软件等)。

这个命令返回什么?

执行此命令后,PowerShell 会返回一个对象,其中包含系统上所有与软件许可相关的产品信息。这些信息包括:

  • LicenseStatus(许可证状态):表示产品的许可证状态,如是否激活。
  • ProductKeyID(产品密钥 ID):与软件产品的密钥相关的标识符。
  • Name(名称):产品的名称,例如 Windows 操作系统或 Microsoft Office。
  • Description(描述):产品的描述,通常是产品类型。
  • Version(版本):产品的版本号。
  • IsLicensed(是否已授权):指示该产品是否已成功激活并授权。

为什么会使用这个命令?

这个命令常用于以下场景:

  1. 查看软件许可证状态:系统管理员使用它来检查 Windows 操作系统或其他软件是否已激活,或者是否存在许可证问题。
  2. 软件资产管理:对于 IT 支持人员或系统管理员而言,查看系统中的所有已安装的授权软件信息非常重要,特别是确保软件许可符合合规性要求。
  3. 自动化和脚本:如果你在进行自动化任务或编写脚本时,需要定期检查软件许可证的状态,可以使用这个命令来获取相关信息。

示例输出:

执行该命令时,可能会看到类似以下内容:

powershellCopy Code
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 还提供了其他多种方式来获取与软件授权、许可证和管理相关的信息。以下是一些常用的命令:

  1. Get-WmiObject -Query 'select * from Win32_OperatingSystem'

    • 获取操作系统的相关信息,包括版本、安装日期、产品密钥状态等。
    powershellCopy Code
    Get-WmiObject -Query 'select * from Win32_OperatingSystem'
  2. Get-WmiObject -Query 'select * from Win32_Product'

    • 获取已安装的所有软件列表,包括软件名称、版本等信息。
    powershellCopy Code
    Get-WmiObject -Query 'select * from Win32_Product'
  3. Get-WmiObject -Query 'select * from SoftwareLicensingService'

    • 获取与软件授权管理相关的信息。
    powershellCopy Code
    Get-WmiObject -Query 'select * from SoftwareLicensingService'
  4. Get-CimInstance -ClassName SoftwareLicensingService

    • CIM (Common Information Model) 提供了一个现代化的获取系统信息的命令,可以代替 Get-WmiObject,获取软件授权服务信息。
    powershellCopy Code
    Get-CimInstance -ClassName SoftwareLicensingService
  5. Get-WmiObject -Class Win32_ComputerSystem

    • 获取计算机系统的硬件信息,包括计算机的型号、制造商等。
    powershellCopy Code
    Get-WmiObject -Class Win32_ComputerSystem
  6. Get-WmiObject -Class Win32_OperatingSystem

    • 获取操作系统相关的信息,如名称、版本、已安装的更新等。
    powershellCopy Code
    Get-WmiObject -Class Win32_OperatingSystem
  7. Get-WmiObject -Query 'select * from SoftwareLicensingProduct where PartialProductKey != NULL'

    • 查询所有有效的软件许可,筛选出有部分产品密钥的软件。
    powershellCopy Code
    Get-WmiObject -Query 'select * from SoftwareLicensingProduct where PartialProductKey != NULL'
  8. Get-CimInstance -ClassName Win32_OperatingSystem

    • CIM 版本的 Win32_OperatingSystem 类,获取操作系统的相关信息。
    powershellCopy Code
    Get-CimInstance -ClassName Win32_OperatingSystem
  9. Get-CimInstance -ClassName Win32_Product

    • CIM 版本的 Win32_Product 类,获取已安装软件的信息。
    powershellCopy Code
    Get-CimInstance -ClassName Win32_Product
  10. slmgr.vbs /dli

    • 使用 slmgr.vbs 脚本查看 Windows 激活状态以及许可证类型。命令行工具,适用于获取系统激活信息。
    powershellCopy Code
    slmgr.vbs /dli

这些命令都可以提供有关系统、操作系统和软件许可证的不同层面的信息,可以根据需要选择合适的命令来查询和管理软件授权或许可证。

使用 slmgr.vbs 命令

这是一个直接查询和管理 Windows 激活状态的工具。你可以使用以下命令检查激活状态:

powershellCopy Code
slmgr.vbs /dli

该命令会显示关于当前系统许可证和激活的详细信息。

2. 使用 Get-WmiObject 查询 Win32_OperatingSystem

你也可以尝试查看操作系统的激活状态。虽然这不会显示详细的许可证信息,但可以获得一些有关系统激活的信息:

powershellCopy Code
Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, ProductType, RegisteredUser, Status

这将显示当前操作系统的名称、类型、注册用户和激活状态。

3. 使用 Get-CimInstance 替代 Get-WmiObject

如果你更喜欢使用 CimInstance,它是 WmiObject 的更新版,可以尝试以下命令:

powershellCopy Code
Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object Caption, ProductType, RegisteredUser, Status

如果仍然没有显示激活状态或许可证信息,可能需要根据操作系统版本或配置调整查询。

补充一些用于管理和查询Windows系统、软件授权以及许可证的PowerShell命令:

  1. slmgr.vbs /xpr

    • 用于查看当前系统是否永久激活。如果系统已永久激活,它会显示“Windows is activated permanently”。
    powershellCopy Code
    slmgr.vbs /xpr
  2. slmgr.vbs /ipk <product-key>

    • 用于输入或更改Windows产品密钥。适用于激活Windows。
    powershellCopy Code
    slmgr.vbs /ipk <your-product-key>
  3. slmgr.vbs /ato

    • 用于激活Windows操作系统。如果产品密钥已经正确输入,可以用此命令来激活Windows。
    powershellCopy Code
    slmgr.vbs /ato
  4. Get-WmiObject -Class Win32_OperatingSystem | Select-Object -Property Caption, ProductType, Version, BuildNumber

    • 获取操作系统的详细信息,包括版本、产品类型(例如家庭版、专业版)、以及构建号等。
    powershellCopy Code
    Get-WmiObject -Class Win32_OperatingSystem | Select-Object -Property Caption, ProductType, Version, BuildNumber
  5. Get-WmiObject -Class Win32_ComputerSystem | Select-Object Manufacturer, Model, Name, TotalPhysicalMemory

    • 获取计算机的硬件信息,包括制造商、型号、计算机名称以及物理内存总量。
    powershellCopy Code
    Get-WmiObject -Class Win32_ComputerSystem | Select-Object Manufacturer, Model, Name, TotalPhysicalMemory
  6. Get-WmiObject -Class Win32_SoftwareFeature

    • 查询软件特征,这对于某些管理任务(如获取特定软件功能或包的安装状态)非常有用。
    powershellCopy Code
    Get-WmiObject -Class Win32_SoftwareFeature
  7. Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, InstallDate, OSArchitecture, ProductType

    • 查看操作系统的安装日期、架构(例如64位或32位)、操作系统类型等详细信息。
    powershellCopy Code
    Get-WmiObject -Class Win32_OperatingSystem | Select-Object Caption, InstallDate, OSArchitecture, ProductType
  8. Get-WmiObject -Class Win32_Volume

    • 获取系统中所有磁盘分区的详细信息,如驱动器字母、大小、文件系统类型等。
    powershellCopy Code
    Get-WmiObject -Class Win32_Volume
  9. Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Select-Object Description, MACAddress, IPAddress

    • 获取网络适配器的配置信息,包括描述、MAC地址和IP地址。
    powershellCopy Code
    Get-WmiObject -Class Win32_NetworkAdapterConfiguration | Select-Object Description, MACAddress, IPAddress
  10. Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property Caption, OSArchitecture, ServicePackMajorVersion

    • 查询操作系统的名称、架构、服务包版本等信息。
    powershellCopy Code
    Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property Caption, OSArchitecture, ServicePackMajorVersion
  11. Get-WmiObject -Class Win32_SoftwareLicensingProduct | Where-Object {$_.LicenseStatus -eq 1}

    • 查询所有已激活的软件许可证。LicenseStatus -eq 1 表示该软件许可证是有效的。
    powershellCopy Code
    Get-WmiObject -Class Win32_SoftwareLicensingProduct | Where-Object {$_.LicenseStatus -eq 1}
  12. Get-CimInstance -ClassName Win32_Product | Select-Object Name, Version, InstallDate

    • 获取已安装软件的名称、版本和安装日期信息,通常用于软件清单管理。
    powershellCopy Code
    Get-CimInstance -ClassName Win32_Product | Select-Object Name, Version, InstallDate
  13. Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property BuildNumber, OSArchitecture

    • 获取操作系统的构建号和架构信息。
    powershellCopy Code
    Get-CimInstance -ClassName Win32_OperatingSystem | Select-Object -Property BuildNumber, OSArchitecture
  14. Get-WmiObject -Class Win32_BIOS

    • 获取计算机的BIOS信息,包括版本、制造商、发布日期等。
    powershellCopy Code
    Get-WmiObject -Class Win32_BIOS

这些PowerShell命令和工具可以帮助你管理Windows系统中的硬件、软件、许可证和激活状态等信息。如果需要更细粒度的管理,还可以结合脚本来实现自动化任务或定期检查。

 

posted @ 2025-01-31 19:12  suv789  阅读(730)  评论(0)    收藏  举报