|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Создание файлов на основе данных из AD домена |
|
VBS/WSH/JS - [решено] Создание файлов на основе данных из AD домена
|
Пользователь Сообщения: 106 |
Профиль | Отправить PM | Цитировать День добрый! Опять с просьбой к сообществу.
Для анализа логов прокси сервера поставили LightSquid. Для вывода информации в человеческом виде необходимо наличие двух файлов вида: realname.cfg: group.cfg: Сейчас оба файла сделаны вручную, но было бы неплохо получать их автоматически. Поэтому прошу помощи в доработке логон и логофф скриптов и создании скрипта для создания данных файлов. Сейчас используется следующий логон скрипт: Dim adsinfo, ThisComp, oUser ' Определяем объекты Set adsinfo = CreateObject("adsysteminfo") Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName) Set oUser = GetObject("LDAP://" & adsinfo.UserName) ' Заносим данные в AD ' В поле Description компьютера пишем имя пользователя, и время входа Thiscomp.put "description", "Logged on: " + ThisComp.cn + " " + CStr(Now) ThisComp.Setinfo 'В поле Description учетки пользователя пишем имя компьютера и время входа oUser.put "description", "Logged on: " + ThisComp.cn + " " + CStr(Now) oUser.Setinfo wscript.quit Dim adsinfo, ThisComp, oUser ‘ Определяем объекты Set adsinfo = CreateObject("adsysteminfo") Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName) Set oUser = GetObject("LDAP://" & adsinfo.UserName) ‘ Заносим данные в AD ‘ В поле description компьютера пишем имя пользователя, и время входа Thiscomp.put "description", "Logged off: " + oUser.cn + " " + CStr(Now) ThisComp.Setinfo ‘В поле description пользователя пишем имя компьютера и время входа oUser.put "description", "Logged off: " + ThisComp.cn + " " + CStr(Now) oUser.Setinfo wsсript.quit P.s. И еще вопрос как модифицировать логофф скрипт чтобы в описание компьютера и пользователя получалось не "Logged off: Имя компьютера/ФИО пользователя Время Дата выключения", а "Имя компьютера/ФИО пользователя; Вошел: Время Дата; Вышел: Время Дата". Т.е. чтобы не происходило перезаписывание значения поля Description, а происходило дописывание значений. P.p.s. Еще бы хотелось еще один скрипт, который генерировал файл вида: "IP_компьютера; Отдел; ФИО пользователя; Время Дата входа; Время Дата выхода" Лучше сразу в cvs файл, просто иногда возникает ситуация когда надо знать включался ли компьютер в некоторые дни или нет. |
|
Отправлено: 08:42, 12-12-2018 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 15:47, 12-12-2018 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 106
|
Профиль | Отправить PM | Цитировать Спасибо за наводку, обязательно гляну. Возможно получиться разобраться в его работе.
P.s. Увы, скрипты будут крутиться на Windows Server 2003, там такого модуля нет, он появился только на Windows 7. |
Отправлено: 17:14, 12-12-2018 | #3 |
fascinating rhythm Сообщения: 6491
|
Профиль | Отправить PM | Цитировать https://ss64.com/ps/quest.html
Цитата:
|
|
------- Отправлено: 10:37, 13-12-2018 | #4 |
Пользователь Сообщения: 106
|
Профиль | Отправить PM | Цитировать Попробую, спасибо. О таком модуле информации не слышал. Теперь что попробовать.
|
|
Отправлено: 08:29, 14-12-2018 | #5 |
Пользователь Сообщения: 106
|
Профиль | Отправить PM | Цитировать Логон и логофф скрипты поправил. Теперь заноситься то что надо.
Логон: Dim adsinfo, ThisComp, oUser ' Определяем объекты Set adsinfo = CreateObject("adsysteminfo") Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName) Set oUser = GetObject("LDAP://" & adsinfo.UserName) ' Заносим данные в AD ' В поле Description компьютера пишем имя пользователя, и время входа Thiscomp.put "description", oUser.cn + " ; Вошел в: " + CStr(Now) Thiscomp.put "department", oUser.department ThisComp.Setinfo 'В поле Description учетки пользователя пишем имя компьютера и время входа oUser.put "description", ThisComp.cn + " ; Включил в: " + CStr(Now) oUser.Setinfo wscript.quit Dim adsinfo, ThisComp, oUser ' Определяем объекты Set adsinfo = CreateObject("adsysteminfo") Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName) Set oUser = GetObject("LDAP://" & adsinfo.UserName) ' Заносим данные в AD ' В поле Description компьютера пишем имя пользователя, и время входа Thiscomp.put "description", Thiscomp.description + " ; Вышел в: " + CStr(Now) ThisComp.Setinfo 'В поле Description учетки пользователя пишем имя компьютера и время входа oUser.put "description", oUser.description + " ; Выключил в: " + CStr(Now) oUser.Setinfo wscript.quit |
Отправлено: 12:07, 14-12-2018 | #6 |
Пользователь Сообщения: 106
|
Профиль | Отправить PM | Цитировать В принципе стало получаться, но нужна помощь по двум вопросам.
Для получения списка из Ip адреса компьютера и ФИО пользователя сделал такой скрипт: Add-pssnapin Quest.ActiveRoles.ADManagement #подключаем оснастку для работы с AD cls #очищаем экран $realname = "c:\scripts\realname.cfg" #задаем путь к файлу $isfile = Test-Path $realname #проверяем наличие файла if($isfile -eq "True") {Remove-Item $realname} #если есть, удаляем его #подключаемся к домену и получаем списко файлов get-QADComputer | foreach {` $ipname=$NULL #очищаем переменную для IP адреса компьютера $string=$NULL $compname=$_.Name #получаем имя компьютера $description=$_.description #if ($description) {$ipname=[Net.DNS]::GetHostEntry($compname).addressList[0].IPAddressToString} $ipname=[Net.DNS]::GetHostEntry($compname).addressList[0].IPAddressToString #по названию компьютера ищем в DNS'е его IP адрес if ($ipname){$string=$ipname+" "+$description} #если IP адрес получен, то формируем запись для файла if ($string){$string >>$realname}} #если есть что, то пишем в файл Исключение при вызове "GetHostEntry" с "1" аргументами: "Этот хост неизвестен" C:\Scripts\Ip_comp_description.ps1:12 знак:32 + $ipname=[Net.DNS]::GetHostEntry <<<< ($compname).addressList[0].IPAddressToString + CategoryInfo : NotSpecified: (:) [], MethodInvocationException + FullyQualifiedErrorId : DotNetMethodException Второй вопрос: в description у меня пишется "ФИО ; Login: Date Time ; Logoff: Date Time". Как отсечь и писать в файл только то что до первой ";"? P.s. Раньше в описание компьютера писалось на русском языке ("Вошел:", "Вышел:"), но почему-то с одних компьютеров записывалось в правильной кодировке, а с других в другой, из-за чего на части компьютеров описание было нечитаемое. |
Отправлено: 17:44, 19-12-2018 | #7 |
Пользователь Сообщения: 106
|
Профиль | Отправить PM | Цитировать Еще раз спасибо DJ Mogarych, за ссылки, взяв за основую и используя информацию из других источников, доработал скрипты до нужного уровня. Поэтому тему закрываю.
|
Отправлено: 16:46, 21-12-2018 | #8 |
Новый участник Сообщения: 15
|
Профиль | Отправить PM | Цитировать А объясните, что я делаю не так с этими скриптами?
Ни на сервере ни на винде не работают. Пишут, что нет таких команд в принципе. Надо что-то дополнительное ставить ? R:\>Dim adsinfo, ThisComp, oUser "Dim" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. R:\>Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName) "adsinfo.ComputerName)" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. R:\>Set ThisComp = GetObject("LDAP://" & adsinfo.ComputerName) "adsinfo.ComputerName)" не является внутренней или внешней командой, исполняемой программой или пакетным файлом. |
Отправлено: 08:15, 26-04-2019 | #9 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата MiceRus:
|
|
Отправлено: 10:27, 26-04-2019 | #10 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Создание папок на основе имен файлов и перемещение файлов в эти папки | mezzin | Скриптовые языки администрирования Windows | 4 | 10-12-2016 21:11 | |
CMD/BAT - Создание третьего файла на основе двух данных | blackeangel | Скриптовые языки администрирования Windows | 6 | 10-09-2016 23:04 | |
VBS/WSH/JS - Создание группы файлов Excel на основе списка | Serg2010 | Скриптовые языки администрирования Windows | 4 | 23-03-2013 00:43 | |
Создание группы файлов Excel на основе списка | Serg2010 | AutoIt | 1 | 19-03-2013 05:43 | |
Интерфейс - Установка картинки пользователя на основе thumbnailPhoto из AD | Delirium | Microsoft Windows 7 | 2 | 03-04-2012 15:34 |
|