如何为网络上的所有机器获取 Microsoft 许可证认证?

如何为网络上的所有机器获取 Microsoft 许可证认证?

我们有一个小型网络(约 150 台台式机,约 20 台服务器),其中大部分是 Linux。微软一直想每 3 年左右审核一次我们的微软产品。我真的没有时间去 80-90 台台式机并抄下 Win 激活密钥,然后关联微软软件许可密钥。

有没有办法使用 Active Directory 获取此信息?也许使用 PowerShell?

提前致谢。

答案1

通用解决方案:

我认为以微软为中心的解决方案是使用许可音量键,然后只需使用您的KMS 服务器报告许可证激活状态。

Windows 7 及以上版本-解决方案

如果批量许可不是一种选择,并且您的所有客户端都是 Windows 7 或更高版本,您可以查询SoftwareLicensingProductWMI 类在每台机器上检索许可详细信息,下面是使用 PowerShell 和 AD 的示例:

$Clients = Get-ADComputer -LDAPFilter "(&(operatingSystem=*Windows*))"

$LicenseQuery = "SELECT ApplicationID,Name,Description,ProductKeyID,PartialProductKey FROM SoftwareLicensingProduct WHERE LicenseStatus = 1"

foreach($Client in $Clients){
    $ActiveLicenses = @(Get-WmiObject -Query $LicenseQuery -ComputerName $Client.Name)
    if($ActiveLicense.Count -le 1){
        Write-Warning "Unable to find active license for computer $($Client.Name)"
    }
    # Do what you want with the license information here
}

它将需要一些错误处理和输出逻辑(如果您愿意,可以将详细信息导出到 CSV 文件),但这会让您朝着正确的方向前进。

我在查询中包含的属性应该足以进行审计,但如果有疑问,请咨询微软

答案2

我们部署了 OCS Inventory。它是免费的,非常棒,并且提供了您需要的所有信息。

OCS 库存 NG 项目

答案3

使用 NirSoft产品密钥

ProduKey.exe /remoteall 

查找其他命令行选项readme.txt

答案4

我们的处理方式是,我们的 PowerShell 启动脚本使用 NirSoft ProduKey 从系统中提取信息,并将数据上传到文件共享。我们已经使用 PowerShell 启动脚本来管理许多管理任务,因此添加另一个步骤很容易。

每当我对许可证有疑问时,我只需 grep 上传的报告并确保计数匹配,检查重复的密钥等。

起初,我使用 PowerShell 脚本手动抓取 WMI 和注册表来获取此信息,但有几个特殊情况,NirSoft 的工具比我自己开发的工具处理得更好。

相关内容