我需要能够清点我们机器上当前安装的字体信息(大约 200,000 种)。似乎有些用户安装了不该安装的字体(由于许可限制等),现在公司正面临法律问题。
问题是:我知道如何通过 部署包SCCM
,但我对清点和开发一无所知。我上网寻找解决方案,得到了如下结果:
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
类,然后库存会调用并接收/处理输出。这可能吗?
答案1
我做过类似的事情,但使用的是 Altiris 而不是 SCCM。(我想您也可以通过组策略来运行它。)不使用 WMI,而只是编写脚本。我会这样做:
- 创建网络共享。授予运行脚本的用户(System Center Management 服务用户等)对共享的写入权限。
- 修改脚本,使得写入的文件是计算机名称(
strComputerName = wshShell.ExpandEnvironmentStrings( "%COMPUTERNAME%" )
) - 使用日志解析器将数据转换成更易读的形式(SQL?)
另一方面,看起来你可以做按文件类型定制 SCCM 软件报告,因此让它在 %windir%\fonts 目录中收集扩展名为 .fon 和 .ttf 的文件可能会更容易。 这基本上就是某人在 TechNet 上提出的建议。
祝你好运!
答案2
您可以使用 Win32_FontInfoAction 类来检索与安装相关软件元素同时注册的已安装字体的信息。我突出显示该定义是因为该类在我的计算机上是空白的,大概是因为我没有安装任何字体。但是,我会回答这个问题,因为它可能对你有用:
我会通过在每台计算机上查询该类别来生成报告,以确定安装了哪些字体。如果您决定只运行查询,而不是生成报告,那么一旦您看到它们在 wmi 存储库中出现的情况,您就可以轻松地将该查询转换为新的集合,其中包含一些复制粘贴和一些更改,例如哪些特定字体已超出许可证。
https://msdn.microsoft.com/en-us/library/aa394150(v=vs.85).aspx