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

Показать сообщение отдельно

Старожил


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

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


Т.к. проблему надо было решать "ещё вчера". Пришлось отказаться о товыряний с базой и пойти по протезному варианту, в итоге получилось так:
Получилось 2 скрипта:
1-ый, через GPO запускается при logon пользователя и создаёт файл. IP-адрес машины с которой залогинелись в имени файла. Имя пользователя, кто залогинелся, в теле файла. И потом созданный файл скидывается на сервер.
Код: Выделить весь код
' Получение 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"
На сервере работает 2-ой скрипт, который смотрит в папку куда скидываются файлы пользователя, разбирает их и создаёт временный файл в формате IP \t UserName. Данный файл нужен для дальнейшего преобразования кодировок его соджержимого и уже потом создания выходного файла. Который в дальнейшем будет сброжен на Squid

Код: Выделить весь код
Dim objFSO, objRootFolder, file_in, file_out, userName
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8

Set objFSO = CreateObject("Scripting.FileSystemObject")
if objFSO.FileExists("C:\scripts\realname.cfg") then objFSO.DeleteFile("C:\scripts\realname.cfg")
'Создаём файл temp.cfg в корне папке откуда запускается скрипт.
'Это требуется, что бы затирать старый файл, т.к. ForAppending 
'добавляет записи в конец файла, не удаляю и не заменяя имеющееся.
Set file_out = objFSO.CreateTextFile("C:\scripts\temp.cfg", True)
file_out.Close

Set objRootFolder = objFSO.GetFolder("C:\scripts\vbs")
Set filesInRootFolder = objRootFolder.Files

For Each fileInFolder in filesInRootFolder    'проходимся по всем файла в папке
    fileName = fileInFolder.Name    'имя файла = IP-адрес
    'Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set file_in = objFSO.OpenTextFile("C:\scripts\vbs\" & fileName & "", ForReading)    'открываем файл на чтение 
    userName = file_in.ReadLine    'Считываем содержимое файла = имя пользователя
    file_in.Close    'закрываем исходный файл
    resultStr = fileName & vbTab & userName    'создаём результирующую строку
    Set file_out = objFSO.OpentextFile("C:\scripts\temp.cfg", ForAppending, True)    'открываем файд на запись(добавление)
    file_out.WriteLine resultStr    'Записываем результирующую строку
    file_out.Close    'закрываем файл
Next

Set file_result = objFSO.OpenTextFile("C:\scripts\temp.cfg", ForReading)
strForConvert = file_result.ReadAll
Set objStream = CreateObject("ADODB.Stream")
objStream.Type = 2
objStream.Open
objStream.Charset = "UTF-8"
objStream.WriteText strForConvert
objStream.SaveToFile("C:\scripts\realname.cfg")
objStream.Close

if objFSO.FileExists("C:\scripts\temp.tmp") then objFSO.DeleteFile("C:\scripts\temp.tmp")

Const OverwriteExisting = True
Set objFSO = CreateObject("Scripting.FileSystemObject")
objFSO.CopyFile "C:\scripts\realname.cfg" , "\\squid\lightsquid$\", OverwriteExisting

'WScript.Echo "Script complite"
В том, что вышел очень знатный протез, я и сам знаю. Но может кому приходиться или кто-то посоветует как улучшить\поправить\допилить сиё творение.

Последний раз редактировалось pogo, 03-12-2013 в 12:43.


Отправлено: 11:43, 03-12-2013 | #8