25/10/2007, 18h42
|
#8
|
|
|
Re: Recording AD Logons to SQL Database
I modified it so that it works for my db and it worked but I need to add the
IP address of the user logging on. What is the syntax to add the ip address
to the db?
Thanks!
"Richard Mueller [MVP]" wrote:
>
> "kcadmin" <kcadmin@discussions.microsoft.com> wrote in message
> news:50E95CBC-E6DB-4580-BBAE-FC951F323998@microsoft.com...
> > I've been trying to find a way to keep a running log of who logged on,
> > when
> > and from what pc by running the code below in my login script. The code
> > works, but the csv file method is limited since it tends to lock up the
> > file
> > if more than one is trying to write to it simultaneously. I want to do
> > basically the same thing, but log it directly to SQL. Any ideas?
> >
> >
> > '************************************************* ****
> > '** Record Logon Information
> > '************************************************* ****
> >
> > 'Check for the existance of the drop log and create new file if necessary
> >
> > Const FOR_APPENDING = 8
> > strOutputFile = "\\servername\drop$\ad\adlog.csv"
> > Set objFSO = CreateObject("Scripting.FileSystemObject")
> > If objFSO.FileExists(strOutputFile) Then
> > Set objTextStream = objFSO.OpenTextFile(strOutputFile, FOR_APPENDING)
> > Else
> > Set objTextStream = objFSO.CreateTextFile(strOutputFile)
> > End If
> >
> >
> > 'get user info
> >
> > Set objSysInfo = CreateObject("ADSystemInfo")
> > Set objUser = GetObject("LDAP://" & objSysInfo.UserName)
> > Set objComputer = GetObject("LDAP://" & objSysInfo.ComputerName)
> > strMessage = objUser.CN &","& objComputer.CN &","& Now &","
> >
> >
> > 'write it to the file
> >
> > objTextStream.WriteLine strMessage
> > objTextStream.Close
>
> First, I have a similar sample VBScript logon program, but it makes 3
> attempts to append to the log file before giving up:
>
> http://www.rlmueller.net/Logon5.htm
>
> A program to log to an SQL Server database could be similar to below (not
> tested):
> ====================
> Option Explicit
>
> Dim strServer, strInstance, strDatabase, strConnect
> Dim adoConnection, adoCommand, objNetwork
> Dim strUserName, strComputerName, strSQL
>
> ' Specify SQL Server, Instance name (if any), and database.
> strServer = "MyServer"
> strInstance = "MyInstance"
> strDatabase = "MyDatabase"
> strServer = "Idaho"
> strInstance = "PocketLunch"
> strDatabase = "PocketLunch"
>
> If (strInstance <> "") Then
> strServer = strServer & "\" & strInstance
> End If
>
> ' Connection string for database.
> ' This uses Windows Authentication.
> strConnect = "DRIVER=SQL Server;" _
> & "Trusted_Connection=Yes;" _
> & "DATABASE=" & strDatabase & ";" _
> & "SERVER=" & strServer
>
> ' Create ADO objects and connect to database.
> Set adoConnection = CreateObject("ADODB.Connection")
> adoConnection.ConnectionString = strConnect
> adoConnection.Open
>
> Set adoCommand = CreateObject("ADODB.Command")
> adoCommand.ActiveConnection = adoConnection
>
> ' Retrieve values.
> Set objNetwork = CreateObject("Wscript.Network")
> strUserName = objNetwork.UserName
> strComputerName = objNetwork.ComputerName
>
> ' Log date/time, user name, and computer name.
> strSQL = "INSERT INTO MyTable " _
> & "(LogonDate, UserName, ComputerName) " _
> & "VALUES(" _
> & "GETDATE(), " _
> & "'" & strUserName & "', " _
> & "'" & strComputerName & "'" _
> & ")"
> adoCommand.CommandText = strSQL
> adoCommand.Execute
>
> ' Clean up.
> adoConnection.Close
>
> --
> Richard Mueller
> Microsoft MVP Scripting and ADSI
> Hilltop Lab - http://www.rlmueller.net
> --
>
>
>
|
|
|
|