我们拥有一个具有不同域和林的环境,有无信任关系。

我需要使用KMS来管理这些许可证。

我想找出未激活或在宽限期内运行的服务器。

我一直在尝试使用WMIC和Powershell的不同脚本。 但是,无法清晰生成。

下面是尝试的脚本。 我需要这方面的帮助。

从WMIC:

WMIC /Output:@D:\output.txt /node:@D:\serverslist.txt PATH SoftwareLicensingProduct WHERE "ProductKeyID like '%-%' AND Description like '%Windows%'" get LicenseStatus 

从Powershell:

PS C:\Windows\system32> Get-CimInstance -ClassName SoftwareLicensingProduct |where PartialProductKey |select PScomputername,LicenseStatus

我需要帮助来生成带有计算机名称/ IP和许可证状态的表。

提前致谢。

#1楼 票数:3 已采纳

在这里,我做了一些调整。

首先,您的代码以数字形式返回LicenseStatus ...可以,但是要获得一些实际的惊喜,我从MSDN咨询了此图表以了解数字的含义 ,并在Calulated中将其与Switch语句一起使用用具有意义的许可证状态替换数字的属性,为我们提供了如下逻辑:

select Pscomputername,Name,@{Name='LicenseStatus';Exp={

switch ($_.LicenseStatus)
{
0 {'Unlicensed'}
1 {'licensed'}
2 {'OOBGrace'}
3 {'OOTGrace'}
4 {'NonGenuineGrace'}
5 {'Notification'}
6 {'ExtendedGrace'}
Default {'Undetected'}
}
#EndofCalulatedProperty
}}

这样就给了我们完整的代码,并且还提取了产品的名称。 您可以通过将它们的名称添加到-ComputerName属性来对多个系统运行此命令:

    Get-CimInstance -ClassName SoftwareLicensingProduct -computerName localhost,dc01,windows10 |
     where PartialProductKey | select Pscomputername,Name,@{Name='LicenseStatus';Exp={
        switch ($_.LicenseStatus)
        {
    0 {'Unlicensed'}
    1 {'licensed'}
    2 {'OOBGrace'}
    3 {'OOTGrace'}
    4 {'NonGenuineGrace'}
    5 {'Notification'}
    6 {'ExtendedGrace'}
    Default {'Undetected'}
}
#EndOfCaltulatedProperty
}}

这将为您提供如下结果:

PSComputerName                         Name                                   LicenseStatus                        
--------------                         ----                                   -------------                        
localhost                              Office 15, OfficeProPlusVL_MAK edition licensed                             
localhost                              Windows(R), ServerDatacenter edition   licensed 
dc01                                   Windows(R), ServerStandard edition     licensed
Windows10                              Windows(R), ServerStandard edition     licensed

#2楼 票数:1

您也可以尝试

$activation      = (Get-CimInstance -ClassName SoftwareLicensingProduct | where ApplicationId -EQ 55c92734-d682-4d71-983e-d6ec3f16059f | where PartialProductKey).LicenseStatus

#3楼 票数:0

Get-CimInstance -ClassName SoftwareLicensingProduct | 
where PartialProductKey | 
select Name, ApplicationId, LicenseStatus

  ask by Raj N D translate from so

未解决问题?本站智能推荐:

2回复

使用Powershell在“环境”选项卡中为终端服务器客户端分配登录脚本

嗨,我想使用Powershell为用户配置文件设置登录脚本参数。 我打算使用WMIC USERACCOUNT来执行此操作,但是发现这是不可能的。 如下所示,该方法不存在于方法中: 我希望将其作为Powershell中的语句来执行,但是如果不可能,可以将其作为脚本来完成,我希望为Win S
1回复

如何创建WmicPowershell脚本

我对Powershell命令非常陌生,我正努力朝着能够创建简单脚本的方向发展。 例如,我正在研究一个脚本,该脚本将按顺序运行以下命令: 命令1:WMIC 命令2:name =“ Cloud Workspace Client”调用的产品卸载/ nointeractive 第二条命令取
3回复

创建日期上的WMIC查询以查找旧进程

我正在尝试提取 1 天前在我的 Windows 10 PC 上启动的进程的信息。 我在 Creationdate 字段上没有成功匹配。 wmic process where "Creationdate < $((Get-Date).AddDays(-1).ToShortDateString()
1回复

在WMIC输出方面需要帮助

如何格式化以下wmic命令的输出文件? 我需要在出现故障的机器上返工
1回复

如何检查IIS状态和正常运行时间?

我正在尝试使用wmic或powershell命令来检查IIS的状态(是否正在运行)和正常运行时间。 要检查状态,我使用了wmic命令: 但是我已经读到IISADMIN服务对于运行更高版本的IIS并不是必需的。 是否可以为此目的检查其他服务,或者可以使用其他方法获取此信息?
1回复

PowershellGet-HotFix查找文本文件中提供的更新[关闭]

关闭。 这个问题需要更加集中。 它目前不接受答案。 想改善这个问题吗? 更新问题,使其仅通过编辑这篇文章来
1回复

如何使用Invoke-WmiMethod将调试器附加到进程?

我有一个已在远程计算机上运行的进程,我想将调试器附加到该计算机上。 我想使用Invoke-WMIMethod,以便当我从该远程会话断开连接时,调试器将在后台保持与进程的连接。 到目前为止,我有: 我收到以下错误: 我在正确的轨道上吗? 当我尝试使用Win32_Process的其他
2回复

使用PS,cmd,vbs等脚本在Win7中自动执行打印机驱动程序更新(打印机设置)和打印机首选项方面的问题?

WMI可以做到,但是我有一个问题,PC处于打开状态,但已注销。 如果我尝试运行: 它失败,并显示一条有关“通用故障”的消息。 我输入RDP,然后从头开始运行相同的命令,它可以正常工作。 我使用的Powershell版本较旧,因此它没有某些打印机cmdlet,并且当前无法更新PS。 有