[VBS] Active Directory para SQL

viskonde

I quit My Job for Folding
Boas pessoal

precisava de passar os dados da minha de utilizadores da Active Directory (windows server 2003) Para uma base de dados em SQL Server.

tinha pensado em criar um script em VBScript.

Alguem sabe como o fazer?

eu com um search Encontrei este site.

http://support.microsoft.com/kb/319716/pt

que tem o seguinte codigo

Código:
Option Explicit

Dim sDomain
Dim oDomain
Dim sFilter
Dim oADobject 
Dim MyConnection
Dim MyCommand
Dim param1
Dim param2
Dim param3

sDomain     = "[COLOR=Red][B]some_domain[/B][/COLOR]"
sFilter     = "User"

'Connect to the domain.
Set oDomain     = GetObject("WinNT://" & sDomain)
oDomain.Filter     = Array( sFilter )

Set MyConnection = CreateObject("ADODB.Connection")
'The following is the SQL connection string.
MyConnection.Open "Driver={SQL Server};server=(local);database=[COLOR=Red][B]Employee[/B][U][B]s[/B][/U][/COLOR];[U][B][COLOR=DarkOrange]uid=some_username;pwd=some_password;[/COLOR][/B][/U]"

Set MyCommand = CreateObject("ADODB.Command")
Set MyCommand.ActiveConnection = MyConnection

Set param1 = MyCommand.CreateParameter("@Username", 202, 1, 128)
Set param2 = MyCommand.CreateParameter("@Fullname", 202, 1, 1000)
Set param3 = MyCommand.CreateParameter("@Description", 202, 1, 1000)

MyCommand.CommandText = "sp_adinfo"
MyCommand.CommandType = 4

MyCommand.Parameters.Append param1
MyCommand.Parameters.Append param2
MyCommand.Parameters.Append param3


For Each oADobject In oDomain
    param1.Value = oADobject.Name
    param2.Value = oADobject.FullName
    param3.Value = oADobject.Description
       MyCommand.Execute
Next
MyConnection.Close()
depois de alterar os parametros a vermelho para os meus tenho duvida na parte a laranja.

isto porque no SQL server estou a usar a Windows Authentication, e como penso que nao se colocam o username e password dessa forma.

num site vi que deveria ficar

Integrated Security=SSPI
.

depois de colocar isso, o script continua a dar erros..
bem tento alterar coisas mas nunca da para resolver :!

alguem sabe o que esta mal?

alguem tem ou sabe de um script que faca isto e funcione? ja andei a tentar ver outras cenas na net mas nnca consigo.. bah
 
Última edição:
Bom dia,
O script que tens asume varias coisas:
1. Que tens un SQL Server 2k5
2. Que tens uma base de dados "Employees" com um storedprocedure, a tabela e os campos que estão no exemplo
3. Que o server utiliza autenticação SQL.

Se o problema é só a liagação ao servidor, este link tem as strings mais utilizadas: http://www.connectionstrings.com/

Uma forma simples de obter os utilizadores do AD com VBScript pode ser algo assim:

Código:
Sub EnumUsers() 
Dim oAD           'As Object
Dim strDomain   'As String
Dim oUser         'As Object
 
strDomain = "NomedoDominio.ext"
Set oAD = GetObject("WinNT://" & strDomain )

 oAD.Filter = Array( "User" )

 For Each oUser In objComputer
          WScript.Echo "Name: " & oUser.Name
          WScript.Echo "Fullname: " & oUser.Fullname
          WScript.Echo "Description: " & OUser.Description
 Next
 
oAD= nothing
OUser = Nothing
End Sub


Para testar a ligação ao servidor podes experimentar isto:

Código:
Call ReadDataBase

Sub ReadDataBase()
    Dim cnn            'As ADODB.Connection
    Dim strCon        'As String
    Dim strSQL        'As String
    Dim strLogin      'As string
      
      
    Set cnn = WScript.CreateObject("ADODB.Connection")
    strLogin = "user id=Utilizador;password=********"

 
  [COLOR=green]  'Com autenticação do Windows[/COLOR]      
    strCon = "Provider=SQLOLEDB;Data Source=TOP;Initial Catalog=Controldat;Integrated Security=SSPI;"
 [COLOR=green]   'Com Autenticação SQL[/COLOR]
[COLOR=green]'  strCon = "Provider=SQLOLEDB;Data Source=TOP;Initial Catalog=Controldat;" & strLogin[/COLOR]

    cnn.ConnectionString = strCon
    cnn.Open 
   
If cnn.State = 1 Then MsgBox "Connected!!"

      Set cnn = Nothing

WScript.quit
End Sub

Good luck
 
Porque queres passar os dados para uma nova BD ?

Porque não fazes o query à AD sempre que necessites? Terás sempre os dados mais actualizados, e não tens que te estar a preocupar com a actualização da tua base de dados sql ...
 
Back
Topo