Bestimmen, welche Benutzer Office tatsächlich verwenden [geschlossen]


-1

Wir haben Office auf den Computern unseres Unternehmens installiert, die sich natürlich in einer Domäne befinden.

Wir stehen vor der Lizenzerneuerung und möchten wissen, welche Benutzer Office tatsächlich nutzen. Daher sparen wir Geld, indem wir nur Lizenzen für Benutzer kaufen, die Office tatsächlich nutzen.

Wir haben kein System Center, von dem mir mitgeteilt wurde, dass es eine Art Auditing-Tool dafür gibt. Daher möchte ich wissen, ob es eine Möglichkeit gibt, diese Informationen auf allen Domänencomputern abzurufen, entweder mit Windows / Active Directory, Built-In in Tools oder mit einem kostenlosen Tool.

Konkret erwarte ich von dem Tool Folgendes:

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

Wir machen hier bei Superuser keine Software-Empfehlungen. Es gibt kein eingebautes Tool, das dies tun könnte. Wenn Sie wissen, dass System Center funktionieren würde, warum können Sie das nicht über die Tatsache hinaus verwenden, dass Sie es nicht haben, es macht genau das, was Sie wollen.
Ramhound

Antworten:


0

Normalerweise würden wir solche Empfehlungen nicht machen, aber ich kann mir zwei Möglichkeiten für Sie vorstellen:

1) System Center - Ich weiß, Sie haben es nicht - aber Sie können es testen, die Daten abrufen und dann deinstallieren.

2) Planen Sie das Gruppenrichtlinienobjekt für Aufgaben. Ich wurde einmal gebeten, die Softwarenutzung mit einem begrenzten Budget zu überwachen. Ich habe dazu eine SQL-Datenbank erstellt (obwohl Textdateien oder ein anderes DB-Format funktionieren würden. Ich habe dann ein VBS erstellt, das auf das Vorhandensein einer Anwendung überprüft hat (winword.exe ist Word, excel.exe ist Excel usw.). Wenn es erkannt wurde Bei diesem Windows-Prozess wird eine Verbindung zur SQL-Datenbank hergestellt und Uhrzeit / Datum, Computer, Benutzer und Anwendung protokolliert. Ich habe dieses Skript als geplante Aufgabe über ein Gruppenrichtlinienobjekt bereitgestellt, um es alle 15 Minuten auf einem bestimmten Satz von Computern und für einige Tage und einige Tage auszuführen SQL wählt später aus Ich hatte einen Baseballstadion der SW-Nutzung.

Option 2 ist nicht kugelsicher und setzt voraus, dass der Benutzer die Apps geöffnet hat, wenn das Skript ausgeführt wird. Bei den meisten Benutzern, die in Outlook-E-Mail oder in einem Word-Dokument / einer Word-Tabelle arbeiten, ist diese Option 15 Minuten lang geöffnet ihre Arbeit.

Für den Anfang sollten Sie Folgendes beachten: 'Wenn der Fehler behoben ist, werden Benutzer keine Nachrichten mehr sehen. Während der Entwicklung entfernen

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

Vielen Dank für Ihre Antwort, ich verwende jetzt eine geänderte Version dieses Skripts. Die Änderungen, die ich machte, waren, "keine" auf die Datenbank zu schreiben, wenn der Benutzer nichts geöffnet hat. Außerdem habe ich einen Fehler bezüglich des Datums behoben, da FormatDateTime (Now) Monat-Datum-Jahr zurückgab und unsere Datenbank verwirrte, da wir Tag-Monat-Jahr verwenden. Ich habe standard iso Jahr-Monat-Tag verwendet
user356042

Fantastisch, solange es das tat, was erforderlich war.
Fazer87
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.