none
Propriedades da Unidade Organizacional (OU) RRS feed

  • Pergunta

  • Pessoal sou novo em desenvolvimento pelo Visual Studio.
    Estou construindo um script que irá alimentar uma combobox as as OU's de meu AD.
    Porém preciso obter além do nome da AD, a "descrição" da mesma e o "tipo", mas os exemplos que tenho encontrado no script center não tem sido utéis.

    as partes do código são as seguintes:

    1) query que será executada - dando erro
    objCommand.CommandText = "SELECT ADsPath FROM 'LDAP://dc=dominio,dc=com,dc=br' WHERE objectCategory='organizationalUnit'"

    2) query que será executada - dando certo, mas sem todas as informações que preciso
    objCommand.CommandText = "SELECT name FROM 'LDAP://dc=dominio,dc=com,dc=br' WHERE objectCategory='organizationalUnit'"

    3) leitura dos resultados. (exemplo para alimentar uma planilha)
     objExcel.Cells(intLinha, 1).value = objRecordSet.Fields("Name") 
     objExcel.Cells(intLinha, 2).value = objRecordSet.Fields("Description") 
     objExcel.Cells(intLinha, 2).value = objRecordSet.Fields("Type") 

    acontece que quando executo conforme o exemplo acima (item 1) ele não retorna nenhum resultado, mas alterando para o exemplo do item 2, que nesse caso só retorna o conteúdo do campo Name.

    Se alguém puder me esclarecer melhor, serei grato.

    Anderson
    Anderson
    quinta-feira, 7 de maio de 2009 14:43

Respostas

  • Olá,

    É porque ele não é string.

    Executa esse exemplo:

    Const ADS_SCOPE_SUBTREE = 2

    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,description,instanceType FROM 'LDAP://dc=dominio,dc=com,dc=br' " & _
            "WHERE objectCategory='organizationalUnit' AND Name = '*nomedaou*'" 

    Set objRecordSet = objCommand.Execute

    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
        Wscript.Echo "Name :" & objRecordSet.Fields("Name").Value
        descricao = objRecordSet.Fields("description").Value
    For Each strValue in Descricao
      WScript.echo "description: " & strValue
    Next

        Wscript.Echo "Type : " & objRecordSet.Fields("instanceType").Value
        objRecordSet.MoveNext
    Loop



    Você tem que colocar o Laço For para adicionar (igual te passei no post anterior)

    Faz um teste com este script e poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    quinta-feira, 7 de maio de 2009 21:06

Todas as Respostas

  • Olá,

    Anderson, tente utilizar da seguinte maneira:

    1) objCommand.CommandText = "SELECT name,description,instanceType FROM 'LDAP://dc=dominio,dc=com,dc=br' WHERE objectCategory='organizationalUnit'"


    2) Insira antes de chamar as linhas do excel (item 3):

    descricao = ""
    strDescric = objRecordSet.Fields("description").Value
    For Each strValor in strDescric
      descricao = desricao & strValor
    Next



    3)  Corrigir as variaveis

     objExcel.Cells(intLinha, 1).value = objRecordSet.Fields("Name") 
     objExcel.Cells(intLinha, 2).value = objRecordSet.Fields("descricao") 
     objExcel.Cells(intLinha, 2).value = objRecordSet.Fields("Type")


    Faça os testes e nos retorne.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique

    quinta-feira, 7 de maio de 2009 18:41
  • Olá Jesiel,

    Seu código realmente funciona, entretanto a propriedade que eu preciso de recuperar não esta sendo recuperada: a propriedade "description".

    Verifiquei no ADSIedit e ela esta lá e com os valores preenchidos, entretanto nenhum dos valores é recuperado pelo string.

    Se souber uma maneira dessa propriedade ser recuperada, por favor me avise.

    No mais funcionou legal.


    Anderson
    quinta-feira, 7 de maio de 2009 20:26
  • Olá,

    É porque ele não é string.

    Executa esse exemplo:

    Const ADS_SCOPE_SUBTREE = 2

    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,description,instanceType FROM 'LDAP://dc=dominio,dc=com,dc=br' " & _
            "WHERE objectCategory='organizationalUnit' AND Name = '*nomedaou*'" 

    Set objRecordSet = objCommand.Execute

    objRecordSet.MoveFirst
    Do Until objRecordSet.EOF
        Wscript.Echo "Name :" & objRecordSet.Fields("Name").Value
        descricao = objRecordSet.Fields("description").Value
    For Each strValue in Descricao
      WScript.echo "description: " & strValue
    Next

        Wscript.Echo "Type : " & objRecordSet.Fields("instanceType").Value
        objRecordSet.MoveNext
    Loop



    Você tem que colocar o Laço For para adicionar (igual te passei no post anterior)

    Faz um teste com este script e poste os resultados.

    Até mais,

    Jesiel

    Obs.: Se útil, classifique
    quinta-feira, 7 de maio de 2009 21:06