Скрипт для отображения имени пользователя

Windows Script Host (WSH), WMI, vbs скрипты и т.д. Создание и применение скриптов.

Модератор: Модераторы

Активный пользователь
Сообщения: 185
Зарегистрирован: 09 дек 2004, 17:12
Откуда: Жуковский

Сообщение Admin » 13 дек 2005, 13:39

Насчет разрешений это прописывается в Групповых политиках (Я думал что все догадаются ;) ).Даются права доступа пользователю на редактирование одной веточки реестра, и права на запуск останов служб "Сервер" и "Обозреватель компьютеров".У меня все работает, пока.

Активный пользователь
Сообщения: 185
Зарегистрирован: 09 дек 2004, 17:12
Откуда: Жуковский

Сообщение Admin » 13 дек 2005, 13:44

Цитата (Stratofortress @ 12.12.2005 - 19:59)
а вот ещё. ;))
Цитата
A network resource is announced every 12 minutes. If the Master Browser does not hear an announcement for 3 x 12 = 36 minutes then the resource is dropped. The Master Browser sends out the resource list to the Backup Browsers every 15 minutes. It is conceivable that a resource could be down for 36 + 15 = 51 minutes before it is finally removed from the resource list and no longer displayed in Explorer.
[/quote]


понятно — к чему это я? ;)
[/quote]

А вот этот момент я не понял?????
Нельзя ли по русски?
Администратор
Сообщения: 3444
Зарегистрирован: 19 дек 2003, 13:36
Откуда: Москва

Сообщение domovoy » 13 дек 2005, 14:53

Admin
Stratofortress
Предлагаю небольшую модификацию скрипта.
Изменения: скрипт не выполняется при работе пользователя на серверах, как терминальных так и остальных.
Для этого у свойствах серверов в АД использовано поле Location (Размещение)


Код

'Определяем значание поля Location (Размещение)компьютера
Set WshNetwork = CreateObject("WScript.Network")
On Error Resume Next
Path = WSHNetwork.ComputerName
Set objSysInfo = CreateObject("ADSystemInfo")
strComputerDN = objSysInfo.ComputerName
Set objComputer = GetObject("LDAP://" & strComputerDN)

'Исходя из этого назначаем выполнение скрипта
' В примере для серверов мы установили значение Location = "Серверная"
Select Case objComputer.Get("Location")
 Case "Серверная"
' Скрипт не нужно выполнять, производим выход
Wscript.Quit  
 Case Else
'Скрипт нужен производим выполнение
' Определяем контекст пользователя в АД
Set WshNetwork = CreateObject("WScript.Network")
Path = WshNetwork.UserName
Set objSysInfo = CreateObject("ADSystemInfo")
strUserDN = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUserDN)

' Остановка службы сервер для внесения данных о пользователе
Set objWMIService = GetObject("winmgmts:")
Set colSoftware = objWMIService.ExecQuery _
("Select * FROM Win32_Service WHERE Name ='Lanmanserver'" )
For Each objSoftware in colSoftware
objSoftware.StopService()
Next
' Внесение данных о пользователе в свойcтва компьютера
Set WshShell = Wscript.CreateObject("WScript.Shell")
Set WshNetwork = CreateObject("WScript.Network")
WshShell.RegWrite "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\lanmanserver\parameters\srvcomment", objUser.DisplayName

' Перезапуск службы сервер
Set objWMIService = GetObject("winmgmts:")
Set colSoftware = objWMIService.ExecQuery _
("Select * FROM Win32_Service WHERE Name ='Lanmanserver'" )
For Each objSoftware in colSoftware
objSoftware.StartService()
Next
End Select

[/code]


В принципе вместо поля "Location" можно использовать поле описания "Description"
Тогда участок кода скрипта будет выглядеть так

Код
Select Case objComputer.Get("Description")
[/code]


После принятия варианта внесу изменения в статью на сайте. ;)
Правильно заданный вопрос - это уже половина ответа.

хм...
Аватара пользователя
Сообщения: 611
Зарегистрирован: 07 апр 2004, 17:10
Откуда: ссср

Сообщение Stratofortress » 13 дек 2005, 16:41

domovoy
Цитата
скрипт не выполняется при работе пользователя на серверах, как терминальных так и остальных.
[/quote]

ну, на терминальных понятно. а вот с остальными… если пользователь — разработчик и его рабочее окружение именно сервер? например.

это раз. второе. способ фильтрации серверов не красивый.
тема вроде как поднималась index.php?s...t=0&#entry21516
нет времени разбираться — наймите того, кто знает.

Администратор
Сообщения: 3444
Зарегистрирован: 19 дек 2003, 13:36
Откуда: Москва

Сообщение domovoy » 13 дек 2005, 17:42

Stratofortress
Цитата
если пользователь — разработчик и его рабочее окружение именно сервер? например.
[/quote]

Если он работет непосредственно на нем, то есть смысл отображать его имя.
НО если это скажем файловый серевер или сервер баз данных и при логине на него пользователя (администратора, разрабочика) его имя в сетевом окружении будкт постоянно менятся это просто внесет хаос и непонятки при просмотре.
Для фильтации таких серверов и прописывается или поле "Location" или поле описания "Description" в учетных данных этих серверов в АД.

Цитата
способ фильтрации серверов не красивый.
[/quote]

Хм, предложи более красивый и оптимальный.
Правильно заданный вопрос - это уже половина ответа.

хм...
Аватара пользователя
Сообщения: 611
Зарегистрирован: 07 апр 2004, 17:10
Откуда: ссср

Сообщение Stratofortress » 13 дек 2005, 18:49

domovoy
Цитата
предложи более красивый и оптимальный
[/quote]

http://msdn.microsoft.com/library/defau ... ystems.asp

Код


If InStr(UCase(strOS), "SERVER") > 0 Then…


[/code]


Цитата
если это скажем файловый серевер или сервер баз данных и при логине на него пользователя (администратора, разрабочика) его имя в сетевом окружении будкт постоянно менятся это просто внесет хаос и непонятки при просмотре
[/quote]

;) всё правильно. думаем как автоматизировать определение роли сервера. ну, с dc, gc и прочим ещё как-то разобраться можно. можно. а вот файловый это сервер, бд или ещё чего…

да. а если все сотрудники — разработчитки? ;))
а если отключить netbios? ;))
а если политиками закрыть службу сервера?
а если это всё — вместе?
нет времени разбираться — наймите того, кто знает.

Активный пользователь
Сообщения: 185
Зарегистрирован: 09 дек 2004, 17:12
Откуда: Жуковский

Сообщение Admin » 13 дек 2005, 19:01

Цитата (Stratofortress @ 13.12.2005 - 17:49)
да. а если все сотрудники — разработчитки? ;))

[/quote]

Тогда просто оставить скрипт как он есть и не париться, пусть в сетевом окружении отображаются все пользователи где бы они не работали.

А в остальном, пустое.Слишком много "если".Нельзя создать решение которое идеально подходит для всех.Считаю что крайняя редакция domovo`го подойдет для большинства.
А еще помоему дальнейшим усовершенствованием данного скрипта будет еще и указания времени проведенного пользователем за компом. Попробую что нить такое сочинить.
хм...
Аватара пользователя
Сообщения: 611
Зарегистрирован: 07 апр 2004, 17:10
Откуда: ссср

Сообщение Stratofortress » 13 дек 2005, 19:03

Admin
domovoy
ребят. броузер очумеет. ;))
нет времени разбираться — наймите того, кто знает.

Активный пользователь
Сообщения: 185
Зарегистрирован: 09 дек 2004, 17:12
Откуда: Жуковский

Сообщение Admin » 13 дек 2005, 19:07

Stratofortress
Да есть такая тема. Например служба сервер на компах юзверей иногда некорректно перезагружается. Пока не понял как это устранить. <_<

хм...
Аватара пользователя
Сообщения: 611
Зарегистрирован: 07 апр 2004, 17:10
Откуда: ссср

Сообщение Stratofortress » 13 дек 2005, 19:11

на самом деле, imho всю эту информацию лучше отображать (коли приспичило) не в "сетевом окружении".
мне кажется, первоначальный вариант (батник) в данном случае куда более универсален. поскольку именно для него как раз ни одно из "если" не есть тупик.
я, конечно, понимаю, что "шуруп, забитый молотком держит лучше, чем гвоздь, закрученный отвёрткой" © но. почему не воспользоваться отвёркой для шурупа, а молотком — для гвоздя? и не рассматривать звёзды в микроскоп.

т.е. надо поглядеть на то кто куда залогинен и сколько там сидит — пожалуйста туда-то и туда-то кликнуть. всё…
нет времени разбираться — наймите того, кто знает.

Пред.След.

Вернуться в Скрипты

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1