'/********************************************************************/
'/* Имя: localgroupAdministrator.vbs
'/* Назначение: Находим всех пользователей, кто находится в локальных администраторах и записываем их в лог-файл.
'/* Использование: Поместить скрипт в Logon/StartUP GPO, например. При желании можно запустить через psexec.
'/* Лог файл формируется в CSV формате. Копируем лог, переименовываем в *.csv и открываем в Excel'е.
'/* Язык: VBScript
'/* Работает на: Win2k, Win2k3, XP, Vista
'/* Сборка от: 22 мая 2009, 10:00
'/********************************************************************/
' Полный путь к файлу куда пишем лог, шаблон LocalGroupAdministrator-Текущая_ДАТА.log
strLogFile = "\\server\log$\LocalGroupAdministrator-" & Year(date) & Month(date) & ".log"
' Ниже этой строчки скрипт изменять НЕ рекомендуется!!!
'/********************************************************************/
' Выключаем стандартное сообщение об ошибках в скрипте. После обработки ошибки продолжить выполнение
On Error Resume Next
Set objNetwork = Wscript.CreateObject("Wscript.Network")
' Получаем имя компьютера
strComputer = objNetwork.ComputerName
' Находим все локальные группы с SID=S-1-5-32-544, Локальные администраторы
Set colItems = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")._
ExecQuery ("Select * From Win32_Group Where Domain = '" & strComputer & "' AND SID = 'S-1-5-32-544'")
' Объявляем переменные для работы с лог-файлом
Const numForReading = 1, numForWriting = 2, numForAppending = 8
Dim objFSO, objFile
' Для работы с файлом необходим объект FileSystemObject
Set objFSO = CreateObject("Scripting.FileSystemObject")
' Открываем лог-файл на добавление записей, если файла нет, то он создастся
Set objFile = objFso.OpenTextFile(strLogFile, numForAppending, True)
' Проходим по всем группам Локальных администраторов
For Each objItem in colItems
' Получаем имя группы
strAdminGroup = objItem.Name
Set objGroup = GetObject("WinNT://" & strComputer & "/" & strAdminGroup & ",group")
' Текущая дата. Не зависит от региональных настроек
strDate = Day(date) & "." & Month(date) & "." & Year(date)
' Текущее время. Не зависит от региональных настроек
strTime = Hour(time) & ":" & Minute(time) & ":" & Second(time)
' Формируем строку для записи в лог-файл. "Дата, время, компьютер, группа,"
strResult = strDate & ";" & strTime & ";" & strComputer & ";" & strAdminGroup & ";"
' Проходим по всем пользователям в группе
For Each objUser In objGroup.Members
strUserPath = objUser.aDSPath
strUserPath = Replace(strUserPath, "WinNT://", "")
' Ищем вхождение имени компьютера
numMyPos = InStr (strUserPath, strComputer)
' Если нашли имя компьютера, тогда вырезаем имя домена
If numMyPos > 0 Then
strUserPath = Mid(strUserPath, numMyPos)
End If
' Пишем строку в лог-файл. "Дата, время, компьютер, группа, имя пользователя, домен/имя пользователя, ПЕРЕВОД СТРОКИ"
objFile.Write strResult & objUser.Name & ";" & strUserPath & vbCrLf
Next
Next
' Закрываем лог-файл
objFile.Close
0 комментариев:
Отправить комментарий