Klesk
Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору Я тут недавно писал, нужен был скрипт для сбора данных об использовании программ, скрипт написали, но он странно как-то запускается: групповой политикой из общей папки запускаем батник, в котором Код: start cscript monsoftusage.vbs rem pause | Скрипт видимо вообще не запускается, если разремить pause, то запускается, но в систему уже не войти. Локально запускается нормально. Требуется ваша помощь. Код: '=============================================================== 'При закрытии указанного процесса скрипт пишет в файл на сервере 'имя компьютера, имя пользователя, время запуска процесса и время 'в секундах продолжительнсти работы '+ функция конвертации WMI времени '+ фунция парсинга общего количества секунд на часы и минуты '=============================================================== On Error Resume Next strComputer = "." 'Can change to name of remote machine. ProcessName = "notepad.exe" 'Connect to WMI. Set objWMIService = GetObject("winmgmts:" _ & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2") If Err.Number <> 0 Then HandleError Else MonitorEvent(ProcessName) End If Sub MonitorEvent(strProcessName) 'Monitor process deletion events Set colMonitorProcess = objWMIService.ExecNotificationQuery _ ("SELECT * FROM __InstanceDeletionEvent " & _ "WITHIN 1 WHERE TargetInstance ISA 'Win32_Process' " & _ "AND TargetInstance.Name = '" & strProcessName & "'") WScript.Echo "Waiting for process to stop ..." While (true) Set objLatestEvent = colMonitorProcess.NextEvent strProcDeleted = Now strProcCreated = WMIDateToString(objLatestEvent.TargetInstance.CreationDate) set objNetwork = WScript.CreateObject("Wscript.Network") FileName = "\\server\MonSoftUsage\" & CStr(Day(Now)) & "-" & CStr(Month(Now))& "-" & CStr(Year(Now)) & ".txt" ComputerName = objNetwork.ComputerName UserName = objNetwork.UserName intSecs = DateDiff("s", strProcCreated, strProcDeleted) arrHMS = SecsToHours(intSecs) WScript.Echo "Duration: " & arrHMS(2) & " hours, " & _ arrHMS(1) & " minutes, " & arrHMS(0) & " seconds" text = ComputerName & " " & UserName & " " & ProcessName & " " & strProcCreated & " " & intSecs PrintToFile filename , text WScript.Sleep(1000) Wend End Sub Function WMIDateToString(dtmDate) 'Convert WMI DATETIME format to RUS-style date string. WMIDateToString = CDate(Mid(dtmDate, 7, 2) & "/" & _ Mid(dtmDate, 5, 2) & "/" & _ Left(dtmDate, 4) & " " & _ Mid(dtmDate, 9, 2) & ":" & _ Mid(dtmDate, 11, 2) & ":" & _ Mid(dtmDate, 13, 2)) End Function Function SecsToHours(intTotalSecs) 'Convert time in seconds to hours, minutes, seconds and return in array. intHours = intTotalSecs \ 3600 intMinutes = (intTotalSecs Mod 3600) \ 60 intSeconds = intTotalSecs Mod 60 SecsToHours = Array(intSeconds, intMinutes, intHours) End Function 'Handle errors. Sub HandleError filename = "c:\cserror.txt" text = "Error " & Err.Number & VbCrLf & _ "Description: " & Err.Description & VbCrLf & _ "Source: " & Err.Source PrintToFile filename, text Err.Clear End Sub Sub PrintToFile(FileName, Str) Const ForAppending = 8 Set objFSO = CreateObject("Scripting.FileSystemObject") Set objTextFile = objFSO.OpenTextFile(FileName, ForAppending, True) objTextFile.WriteLine(Str) objTextFile.Close End Sub |
| Всего записей: 208 | Зарегистр. 19-10-2003 | Отправлено: 07:58 10-07-2006 | Исправлено: Klesk, 07:59 10-07-2006 |
|