1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

[VBS] Active Directory para SQL

Discussão em 'Programação' iniciada por viskonde, 2 de Abril de 2008. (Respostas: 2; Visualizações: 1338)

  1. viskonde

    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: 2 de Abril de 2008
  2. 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
     
  3. kazuza

    kazuza Power Member

    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 ...
     

Partilhar esta Página