确定哪些用户实际使用 Office

确定哪些用户实际使用 Office

我们在公司的计算机上安装了 Office,当然这些计算机在域中。

我们准备续订许可证,并且想知道哪些用户真正使用 Office,因此我们只为实际使用它的人购买许可证,这样可以节省一些钱。

我们没有系统中心,据我所知它有某种审计工具可以做到这一点,所以我想知道是否有办法在所有域机器上获取此信息,无论是使用 Windows/Active Directory、内置工具还是免费工具。

具体来说,我期望该工具能够执行以下操作:

Machine #1:
  winword.exe: 5 times last month
  excel.exe:   not run last month
  powerpoint.exe: 20 times last month
Machine #2:
  ...
  ...
  ...

答案1

通常情况下,我们不会提出这样的建议,但我可以为您想到两种可能性:

1)系统中心 - 我知道您没有它 - 但您可以试用它,获取数据,然后卸载它。

2) 计划任务 GPO。我曾经被要求在有限的预算下监控软件使用情况。我通过构建 SQL 数据库(尽管文本文件或其他 DB 格式也可以)来实现这一点。然后我构建了一个 VBS 来检查应用程序是否存在(winword.exe 是 word,excel.exe 是 excel 等)。如果它检测到 Windows 进程,它将连接到 SQL DB 并记录时间/日期、机器、用户、应用程序。我通过 GPO 将此脚本部署为计划任务,在给定的一组机器上每 15 分钟执行一次,几天后,选择了一些 SQL,我大致了解了 SW 的使用情况。

虽然选项 2 不是万无一失的,并且依赖于用户在脚本运行时打开应用程序,但大多数使用 Outlook 电子邮件或 Word 文档/电子表格的用户都会将其打开 15 分钟......尤其是如果这是他们工作的一部分。

类似这样的内容应该可以作为入门指南:'出现错误时继续下一步将阻止用户看到消息。在开发过程中删除

On Error Resume Next

'Get Computer Name
Set wshNetwork = WScript.CreateObject( "WScript.Network" )
strComputerName = wshNetwork.ComputerName
WScript.Echo strComputerName

'Get User Name
strUserName =  wshNetwork.UserName
WScript.Echo strUserName

sComputerName = "."
'Connect to local machine and get all process names
Set objWMIService = GetObject("winmgmts:\\" & sComputerName & "\root\cimv2")
sQuery = "SELECT * FROM Win32_Process"
Set objItems = objWMIService.ExecQuery(sQuery)
'For Each Process Name
For Each objItem In objItems
    'If name is winword or excel.exe (upper case to avoid possible case issues)
    if UCase(objItem.Name) = "WINWORD.EXE" or UCase(objItem.Name) = "EXCEL.EXE" Then
        'connect to SQL
        set con = createobject("ADODB.Connection")
        con.open "Provider=sqloledb;Server=SERVERNAME;Database=DBNAME;User Id=sa;Password=PASSWORDHERE;"
        'Construct insert statement
        sSQL = "INSERT INTO tblSoftwareAudit VALUES ('" & strComputerName & "', '" & strUserName & "', '" & objItem.Name & "', '" & FormatDateTime(Now) & "')"
        'insert SQL statement
        set rst = con.execute(sSQL)
    End If
Next

相关内容