如何获得networking上所有机器的Microsoft许可authentication?

我们有一个小型networking(大约150台桌面,大约20台服务器),其中大部分是Linux。 MS每隔3年左右就要对我们的MS产品进行审核。 我真的没有时间去80-90桌面,并抄下Win激活密钥,然后关联MS软件许可密钥。

有什么方法可以使用Active Directory获取这些信息? 也许使用PowerShell?

提前致谢。

通用解决scheme:

我认为以Microsoft为中心的解决scheme是使用卷密钥进行许可,然后只需使用您的KMS服务器报告许可证激活状态。

Windows 7及以上解决scheme

如果批量许可不是一个选项,并且所有客户端都是Windows 7或更新版本,则可以在每台计算机上查询SoftwareLicensingProduct WMI类以检索许可详细信息,以下是使用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 } 

它需要一些error handling和输出逻辑(如果你愿意的话,你可以将细节导出到一个CSV文件),但这会让你朝着正确的方向前进。

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

我们部署了OCS库存。 它的免费,真棒,并提供所有你需要的信息。

http://www.ocsinventory-ng.org/fr/

使用NirSoft ProduKey :

 ProduKey.exe /remoteall 

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

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

每当我被问到许可证,我只是grep上传的报告,并确保计数匹配,检查重复键等。

起初,我让我的PowerShell脚本为这个信息手动抓取WMI和registry,但是NirSoft的工具比我的本土产品处理好了一些边缘情况。