Всем привет, случайно наткнулся на данный топик, и вот, что могу сказать: была у меня в своё время задача, суть которой заключалась в наличие возможности определять по логину пользователя имя рабочей станции на которую он залогинился. Так же д.б. удобный интерфейс для работы с полученными данными и т.д. Выбор стал на vbs скриптах, которые через GPO выполнялись при событииях logon и logoff пользователя на рабочую станцию и заносили необходимые данные в MS SQL, а уж их MS SQl данные можно было выбирать хоть в Exel, хоть в GIU написанный например на Visual Basic и т.д.
Вот код:
Код
on error resume next
dim full_name,ClientIPAdress,ws_name,user_domain,user_name
Set WshNetwork = WScript.CreateObject("WScript.Network")
Set WshShell = WScript.CreateObject("WScript.Shell")
ws_name = WshNetwork.ComputerName
user_domain=UCase(WshNetwork.UserDomain)
user_name=WshNetwork.UserName
GetFullName()
GetClientIPAdress()
Const adOpenStatic = 3
Const adLockOptimistic = 3
Const adUseClient = 3
Set cn = CreateObject("ADODB.Connection")
Set rs = CreateObject("ADODB.Recordset")
cs="Provider=SQLOLEDB.1;Network Library=dbmssocn;Password=password;User ID=database_name;Initial Catalog=table_name;Data Source=database_server_name;"
cn.Open cs
rs.CursorLocation = adUseClient
sql="SELECT * FROM database_name where ws_name='" + ws_name +"'"
rs.Open sql, cn, adOpenStatic, adLockOptimistic
if rs.EOF then rs.addnew
rs("ws_name")=ws_name
rs("ws_ip")=ClientIPAdress
rs("user_domain")=user_domain
rs("user_name")=user_name
rs("login_status")="LOGIN"
rs("login_date")=date+time
rs("logout_date")=null
rs("full_name")=full_name
rs.update
rs.Close
'Start function Get Full User Name from AD
Function GetFullName()
ldap="LDAP://DC=xxx,DC=xxx,DC=xxx"
Set oConnection1 = CreateObject("ADODB.Connection")
Set oCommand1 = CreateObject("ADODB.Command")
oConnection1.Provider = "ADsDSOObject"
oConnection1.Open "Active Directory Provider"
Set oCommand1.ActiveConnection = oConnection1
oCommand1.CommandText = "select displayname, sAMAccountName " & _
"from '" & ldap & "'" & _
"WHERE objectCategory='Person'" & _
"AND objectClass='user' and sAMAccountName='" & user_name & "'"
Set rs = oCommand1.Execute
If Not rs.EOF then full_name=rs.Fields("displayname")
oConnection1.close
end Function
'End function Get Full User Name from AD
'Start function Get client IP adress
Function GetClientIPAdress()
Set objWMIService = GetObject("winmgmts:\\" & ws_name & "\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
For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
ClientIPAdress = IPConfig.IPAddress(i)
Next
End If
Next
end Function