Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows NT/2000/2003 (http://forum.oszone.net/forumdisplay.php?f=5)
-   -   данные полученые из logon-script на рабочий стол (http://forum.oszone.net/showthread.php?t=88388)

philippov 10-08-2007 00:00 625577

данные полученые из logon-script на рабочий стол
 
При логине пользователей winxp-sp2 в w2k3 домен выполняется скрипт "dobro.pozhalovat.vbs". Ну, в этом скрипте определяется, - кто вошел, с какого компа, мапятся расшареные ресурсы, и при успешном завершении дается поп-ап с текстом "Добро Пожаловать Вася Пупкин в домен нашей организации", через три секунды это окно исчезает.

Вопрос. Хотелось бы (даже видел у одних в конторе), чтобы на Десктопе, где-нибудь в уголке эта информация оставалась. Пользователь такой-то, машина - такая-то, домен, ИП, ОС.
Часто пользователь звонящий в службу поддержки - не может сказать свой ИП или имя своей машины - а так все на столе.

Как это можно реализовать ??
Спасибо.

amel27 10-08-2007 03:24 625626

philippov

Вариант 1: использовать специальный софт типа Sysinternals BgInfo.
Вариант 2: переименовать иконку "Мой компьютер" в "Пользователь на Компьютере"

dimich22 10-08-2007 08:51 625681

Ага, только вот по здравом размышлении я пришел к выводу, что переименовывать иконку "Мой компьютер" совсем не нужно, иначе пользователь ее вообще на найдет, да и вы объяснить уже не сумеете - уже проверено. В общем, одни проблемы. Проще батник всем или на общий ресурс скопировать, который выдает имя компьютера и ip-адрес. Или на каждый компьютер наклеить бумажку с именем и адресом))

Butunin Klim 10-08-2007 10:08 625715

Вложений: 1
dimich22, philippov,
Я широко использую для этого SMS очнь удобно достаточно спросить фамилию сотрудника, хотя это он и сам говорит, а вычеслить машину уже не составит труда очень помогает...
пример в файле
amel27, Есть одно "но" Если у пользователя всесь стол забит ярлыками то тогда есть проблемы с пониманием то же под ярлыками.

dimich22 10-08-2007 10:23 625730

Butunin Klim, ну, об SMS мы не говорили. Это все-таки очень специфично, хотя на предыдущем месте работы у меня он был и также активно использовался. А уж если еще обои пользователям поменять, так они вообще сожрут))

philippov 10-08-2007 12:46 625822

Цитата:

Цитата dimich22
В общем, одни проблемы. Проще батник всем или на общий ресурс скопировать, который выдает имя компьютера и ip-адрес.

Наверно так и будет. У каждого на столе иконка под названием "КТО Я?", ядовито-оранжевого цвета, кликаешь, а там все твои данные.

Вообще-то хотелось что-то похожее на Sysinternals BgInfo, только чтобы эта информация была поверх всех элементов рабочего стола, ну как есть на ноутбуках при нажатии спец.кнопок, типа "CAPS LOCK: ON"

farlow 13-08-2007 14:56 626966

Цитата:

Цитата amel27
Вариант 1: использовать специальный софт типа Sysinternals BgInfo.

классная софтина
токо вопрос, как можно вытащить номер телефона текущего юзера

и номера телефонов+название_групп из определенного контейнера

dim-soft 13-08-2007 21:31 627147

а можно инфу добавить в то место где винда пишет что она бета или не лицензионная ?

amel27 14-08-2007 07:14 627229

Цитата:

Цитата farlow
как можно вытащить номер телефона текущего юзера

VBS-скрипт специально для BgInfo:
Код:

On Error Resume Next
Set objWSH = CreateObject("WScript.Shell")
Echo getTelephone(objWSH.ExpandEnvironmentStrings("%USERNAME%"))

Function getTelephone(userName)
    Set oUser = GetObject("LDAP://" & getUserDN(userName))
    getTelephone = oUser.TelephoneNumber
End Function

Function getUserDN (userName)
        Const ADS_SCOPE_SUBTREE = 10
        Set objConnection = CreateObject("ADODB.Connection")
        Set objCommand = CreateObject("ADODB.Command")
        objConnection.Provider = "ADsDSOObject"
        objConnection.Open "Active Directory Provider"
        Set objCommand.ActiveConnection = objConnection
        objCommand.Properties("Page Size") = 1000
        objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
        objCommand.CommandText = "SELECT distinguishedName " & _
                "FROM 'LDAP://" & getDomainDN & "' " & _
                "WHERE objectCategory='user' AND sAMAccountName='" & userName & "'"
        Set objRecordSet = objCommand.Execute
        objRecordSet.MoveFirst
        Do Until objRecordSet.EOF
                ans = objRecordSet.Fields("distinguishedName").Value
                objRecordSet.MoveNext
        Loop
        getUserDN = ans
End Function

Function getDomainDN
        DCs = Split(objWSH.ExpandEnvironmentStrings("%USERDNSDOMAIN%"), ".")
        For Each DC in DCs
                DCString = DCString & "dc=" & DC & ","
        Next
        getDomainDN=Left(DCString, Len(DCString)-1)
End Function

Цитата:

Цитата farlow
и номера телефонов+название_групп из определенного контейнера

куда, на рабочий стол?

farlow 14-08-2007 09:20 627256

Цитата:

Цитата amel27
куда, на рабочий стол? >>>

да, у мекня такая дурная задумка...
у меня есть группы пользователей,
_Бухгалтерия
_Юристы
и т.д.
там в описание групп я хочу вписать номера внутренних телефонов (группы разбиты по кабинетам, и хранятся в отдельном контейнере)

так вт в идеале хотелось бы вывести из этого контейнера все названия групп и их номера телефонов
это было бы очень удобно, тем более уц нас новая атс и никто не знает как позвонить соседям

monkkey 14-08-2007 09:47 627263

farlow,
А у Вас Outlook нет, случаем?

farlow 14-08-2007 12:58 627362

Цитата:

Цитата monkkey
А у Вас Outlook нет, случаем?

пока нету, но через месяц придет новый сервер, бум ставить small business server и скорей всего бум юзать аутглюк, хотя зачем его будем юзать еще не придумал

amel27 14-08-2007 13:01 627365

Цитата:

Цитата farlow
там в описание групп я хочу вписать номера внутренних телефонов

BgInfo поддерживает только статический список... Можно конечно сгенерить весь текст целиком (с именами и описаниями) и выдать одной строкой, но тогда весь дизигн проги по боку и форматировать надо будет средствами VBS... тут возможности минимальные, придется выставить непропорциональный шрифт и либо телефоны ставить сначала, либо добивать строки пробелами.

farlow 14-08-2007 15:05 627456

главное вытащить инфу, а с форматированием как нить разберемся

amel27 15-08-2007 08:10 627780

farlow
что-нить типа такого:
Код:

Set objWSH = CreateObject("WScript.Shell")
UserName = objWSH.ExpandEnvironmentStrings("%USERNAME%")
Echo getGroupsTel(getUserOU(UserName), 50)

' Список групп с телефонами
' OrgUnitDN - имя группы в формате LDAP
' NumSpace  - количество символов под имя группы

Function getGroupsTel (OrgUnitDN, NumSpace)
        Const ADS_SCOPE_SUBTREE = 1
        Set objConnection = CreateObject("ADODB.Connection")
        Set objCommand = CreateObject("ADODB.Command")
        objConnection.Provider = "ADsDSOObject"
        objConnection.Open "Active Directory Provider"
        Set objCommand.ActiveConnection = objConnection
        objCommand.Properties("Page Size") = 1000
        objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
        objCommand.CommandText = "SELECT Name, ManagedBy " & _
                "FROM 'LDAP://" & OrgUnitDN & "' " & _
                "WHERE objectCategory='group'"
        Set objRecordSet = objCommand.Execute
        objRecordSet.MoveFirst
        Do Until objRecordSet.EOF
                nam = objRecordSet.Fields("Name").Value
                nam = Mid(nam, 1, NumSpace)
                man = objRecordSet.Fields("ManagedBy").Value
                If man<>"" Then
                        ans = ans & vbCrLf & _
                                nam & Space(NumSpace-Len(nam)) & _
                                getUserTel(man)
                End If
                objRecordSet.MoveNext
        Loop
        getGroupsTel = ans
End Function

' Телефон группы
' userDN - имя пользователя в формате LDAP

Function getUserTel(userDN)
    Set oUser = GetObject("LDAP://" & UserDN)
    getUserTel = oUser.TelephoneNumber
End Function

' OU пользователя в формате LDAP
' userName - Имя пользователя (LoginName)

Function getUserOU (userName)
        Const ADS_SCOPE_SUBTREE = 10
        Set objConnection = CreateObject("ADODB.Connection")
        Set objCommand = CreateObject("ADODB.Command")
        objConnection.Provider = "ADsDSOObject"
        objConnection.Open "Active Directory Provider"
        Set objCommand.ActiveConnection = objConnection
        objCommand.Properties("Page Size") = 1000
        objCommand.Properties("Searchscope") = ADS_SCOPE_SUBTREE
        objCommand.CommandText = "SELECT distinguishedName " & _
                "FROM 'LDAP://" & getDomainDN & "' " & _
                "WHERE objectCategory='user' AND sAMAccountName='" & userName & "'"
        Set objRecordSet = objCommand.Execute
        objRecordSet.MoveFirst
        Do Until objRecordSet.EOF
                ans = objRecordSet.Fields("distinguishedName").Value
                objRecordSet.MoveNext
        Loop
        getUserOU = Mid(ans ,InStr(ans,",")+1)
End Function

' Домен текущего пользователя

Function getDomainDN
        DCs = Split(objWSH.ExpandEnvironmentStrings("%USERDNSDOMAIN%"), ".")
        For Each DC in DCs
                DCString = DCString & "dc=" & DC & ","
        Next
        getDomainDN=Left(DCString, Len(DCString)-1)
End Function



Время: 17:15.

Время: 17:15.
© OSzone.net 2001-