使用SCCM和WMI来检索字体信息

我需要能够清点目前安装在我们机器中的字体信息(大约20万)。 似乎有些用户安装了他们不应该使用的字体(由于许可限制等),现在公司正面临法律问题。

问题是:我知道如何通过SCCM部署软件包,但我对库存和开发不熟悉。 我上网寻找解决scheme,并得到这样的事情:

 For Each objFont in colItems Set m = objFolder.ParseName(objFont.Name) foundry = objFolder.GetDetailsOf(m, 5) 'msgbox fabricante objFile.WriteLine (objFont.Path & vbtab & objFont.Name & vbtab & foundry) Next 

这个脚本工作正常, 对于我的机器。 但是为了能够从所有机器上收集这些信息,我被告知必须把它变成一个WMI类,然后清单才会调用和接收/处理输出。 那可能吗?

我做了类似的事情,但与Altiris,而不是SCCM。 (我想你也可以通过组策略来运行它。)不使用WMI,而只使用脚本。 我会做什么:

  1. 创build一个networking共享。 给正在运行该脚本的用户(系统中心pipe理服务用户,无论)写入对共享的访问权限。
  2. 修改脚本,以便写入的文件是计算机名称( strComputerName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
  3. 使用Log Parser将数据吐出更可读的内容(SQL?)

另一方面,看起来您可以通过文件types为SCCM执行自定义软件报告 ,因此只需要在%windir%\ fonts目录中收集扩展名为.fon和.ttf的文件就可能更容易。 这基本上是有人在TechNet上提出的。

祝你好运!

您可以使用Win32_FontInfoAction类来检索已安装的字体的信息,这些已安装的字体已在与相关软件元素安装的同时注册 。 我突出了这个定义b / c在我的机器上这个类是空白的,据推测b / c我没有安装任何字体。 不过,我会回答这个问题,因为它可能适合你:

我会运行一个报告,通过查询每台计算机上的类来确定安装了哪些字体。 如果你决定只是运行一个查询,而不是一个报告,你可以很容易地把这个查询变成一个新的集合,有一些复制面食和一些改变,比如什么特定的字体没有许可证,一旦你看到它们是如何出现在wmi回购。

https://msdn.microsoft.com/en-us/library/aa394150(v=vs.85).aspx