
우리 회사 컴퓨터에는 물론 도메인에 있는 Office가 설치되어 있습니다.
우리는 라이선스 갱신을 준비하고 있으며 실제로 Office를 사용하는 사용자가 누구인지 알고 싶습니다. 따라서 실제로 Office를 사용하는 사람들에 대해서만 라이선스를 구입하여 비용을 절약합니다.
우리에게는 이를 수행하는 일종의 감사 도구가 있다고 들었던 System Center가 없습니다. 따라서 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)System Center - 시스템 센터가 없다는 것을 알고 있습니다. 하지만 시험판을 사용해 보고 데이터를 얻은 다음 제거할 수 있습니다.
2) 작업 GPO를 예약합니다. 제한된 예산으로 소프트웨어 사용을 모니터링하라는 요청을 받은 적이 있습니다. SQL 데이터베이스를 구축하여 이 작업을 수행했습니다(텍스트 파일이나 다른 DB 형식은 작동하지만). 그런 다음 응용 프로그램의 존재를 확인하는 VBS를 구축했습니다(winword.exe는 단어, excel.exe는 Excel 등). 해당 Windows 프로세스는 SQL DB에 연결하고 시간/날짜, 컴퓨터, 사용자, 응용 프로그램을 기록합니다. 저는 이 스크립트를 GPO를 통해 예약된 작업으로 배포하여 특정 컴퓨터 집합에서 며칠 및 일부에서 15분마다 실행했습니다. SQL은 나중에 SW 사용의 야구장을 선택했습니다.
옵션 2는 방탄이 아니며 스크립트가 실행될 때 사용자가 앱을 열어야 하는 반면 Outlook 이메일이나 단어 문서/스프레드시트에서 작업하는 대부분의 사용자는 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