Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Поиск подстроки в файле с последующей заменой подстроки (многопользовательский досту)

Ответить
Настройки темы
VBS/WSH/JS - [решено] Поиск подстроки в файле с последующей заменой подстроки (многопользовательский досту)

Старожил


Сообщения: 208
Благодарности: 5

Профиль | Отправить PM | Цитировать


Доброго времени суток!
Прощу помощи при решении следующего вопроса!
Необходим скрипт, который будет закинуть в GPO и при залогиневании пользователя будет записывать информацию в файл о том кто и откуда залогинелся.
Предположительно содержимое файла будет выглядеть следующим образом:
Цитата:
28.11.2013 12.00.01 192.168.0.10 Иванов Иван
28.11.2013 12.00.55 192.168.0.16 Петров Пётр
Собственно с этим больших проблем нет:

Код: Выделить весь код
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery ("Select IPAddress from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

For Each IPConfig in IPConfigSet
	If Not IsNull(IPConfig.IPAddress) Then
		ip = IPConfig.IPAddress(0)
	End If
Next

Dim objADSystemInfo, objComp, objUser
Set objADSystemInfo = CreateObject("ADSystemInfo")
Set objUser = GetObject("LDAP://" & objADSystemInfo.UserName)
strUserName = objUser.sn + " " + objUser.GivenName

Dim objFSO, file
Const ForWriting = 2
strSourceFile = ".\Ip2Name.txt"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set file = objFSO.OpenTextFile(strSourceFile, ForWriting, True)
file.Write Date & " " & Time & vbTab & ip & vbTab & strUserName
Подскажите пожалуйста, как сделать построчное чтение с последующей заменой подстроки. Например:
Иванов Иван в 09.00 залогинелся на компьютере с IP-адресом 192.168.0.10. В 14.00 тот же пользователь Иванов Иван, пересел за др. компьютер с IP-адресом 192.168.0.20 и начал работать за ним.
Требуется, что бы при логине пользователя, производился поиск по Фамилии\Имени и сравнивался IP-адрес, если IP-адрес отличается от того, что был в файле, то заменить его на новый.
Ещё не очень понимаю, как быть при варианте, что несколько людей залогинелись одновременно и файл будет открыт сразу несколькими пользователя.
Заранее спасибо всем кто откликнется и поможет реализовать данную задачу хотя бы частично.

Отправлено: 14:16, 28-11-2013

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


pogo, какой из скриптов в этой теме вы именуете «первым», и какая строка в нём под номером 32?

Отправлено: 16:45, 05-12-2013 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Старожил


Сообщения: 208
Благодарности: 5

Профиль | Отправить PM | Цитировать


Ой, что-то не подумал что в теме уже куча скриптов.
Под "первым" я имел ввиду вот этот:
Код: Выделить весь код
' Получение IP-адреса компьютера
Dim objWMIService, IPConfigSet, strComputer, ip
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set IPConfigSet = objWMIService.ExecQuery ("Select IPAddress from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")

For Each IPConfig in IPConfigSet
    If Not IsNull(IPConfig.IPAddress) Then
        ip = IPConfig.IPAddress(0)
    End If
Next

' Получение залогиненого имени пользователя в формате: Фамилия Имя
Dim objADSystemInfo, objUser
Set objADSystemInfo = CreateObject("ADSystemInfo")
Set objUser = GetObject("LDAP://" & objADSystemInfo.UserName)
strUserName = objUser.sn + " " + objUser.GivenName

' Создание файла с IP-адресом в имени и именем пользователя в теле файла.
Dim objFSO, file
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set file = objFSO.CreateTextFile("\\server\vbs\" & ip & "", True)
file.Write strUserName

'WScript.Echo "Script complite"
Строка 32:
Код: Выделить весь код
file.Write strUserName
В общем проблема была решена следующим образом:
В Control Panel -> All Control Panel -> Region and Language.
Вкладка Formats, поле Format указал Russia
Вкладка Location, поле Current location указал Russia
Вкладка Administrative -> Change system locale... указал Russian (Russia) (После изменения этого поля система попросит перезагрузиться)
Ребутнулся и вроде ошибка пропала.

Отправлено: 17:53, 05-12-2013 | #12


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


pogo, достаточно странно. В указанной строке вроде бы нет никаких зависимостей от региональных настроек.

Отправлено: 17:59, 06-12-2013 | #13



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » VBS/WSH/JS - [решено] Поиск подстроки в файле с последующей заменой подстроки (многопользовательский досту)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
CMD/BAT - Как получить значение искомой подстроки в строке? Loki3D Скриптовые языки администрирования Windows 11 24-02-2018 08:37
Replacer - утилита для замены подстроки в файле apozlevich AutoIt 4 16-10-2013 23:37
VBS/WSH/JS - Поиск в одном текстовом файле с заменой в другом cortes_ Скриптовые языки администрирования Windows 1 21-09-2013 13:58
C/C++ - [решено] Поиск и замена в тексте (извлечение подстроки) dima1981 Программирование и базы данных 10 21-03-2010 15:50
Создание подстроки в Word'e kop4enyi Хочу все знать 2 10-07-2008 12:55




 
Переход