none
Script RRS feed

  • Pergunta

  • Ola PEssoal, boa tarde!

     

    Estou com dificuldades para tentar aplicar um determinado script para minhas OU's.

    As  OU's aqui estão em forma de hierarquia da organização ou seja:

     

    OU Matriz  | Sub-OU Filial de Taguatinha | Sub-OU Funcionários.

     

    Gostaria de aplicar o script abaixo nos Funcionários Filial, porém não consigo saber a sintaxe ideal a utilizar:

     

     

    Option Explicit

    Dim objOU, objUser, objRootDSE
    Dim strOU, strHomeAtual, strLogin
    Dim numTotal

    Set objRootDSE = GetObject("LDAP://RootDSE")
    strOU = "Matriz / Filial de Taguatinha / Sub-OU / Funcionários," & objRootDSE.Get("DefaultNamingContext")

    set objOU = GetObject("LDAP://" & strOU )
    numTotal = 0
    strHomeAtual = ""

    For each objUser in objOU

     If objUser.class="user" Then

      strLogin = objUser.Get("sAMAccountName")

      objUser.Put "scriptPath", ""
      objUser.Put "homeDirectory", "\\uergs-ccr-fs03\home\" & strLogin
      objUser.Put "homeDrive", "H:"
      objUser.SetPassword
      objUser.SetInfo
     
      numTotal = numTotal +1

     End if

    next
    WScript.Echo "( " & numTotal & " ) usuários alterados"
    WScript.Quit

     

    Se alguém poder auxiliar, será bem vindo ;-)

     

     

    Abraço,

    quinta-feira, 31 de maio de 2007 18:34

Respostas

  • Tenta colocar um objUser.Save logo abaixo da linha que vc muda o homedrive.
    Não lembro de cabeça... mas acho que o nome do método que tá faltando é Save. Em todo caso, qualquer script que usa ADSI tem isso e é fáicl achar.

    objUser.Put "homeDrive", "H:"
    objUser.Save


    []s,


    Vinicius Canto
    quinta-feira, 7 de junho de 2007 05:12
    Moderador

Todas as Respostas

  • pode até existir mais erros mas de cara eu acho que é a forma que vc está escrevendo o caminho LDAP.

    veja a forma correta OU=teste,OU=IT,OU=CFO,OU=BR,DC=suneast,DC=com,DC=br, use o adsiedit para visualizar caminhos LDAPS.

    abraço.

    quinta-feira, 31 de maio de 2007 20:05
  • Ola Romeu,

     

    Agradeço o teu auxílio

     

    Pórem ainda continua com problemas.

    Me acusa erro na linha 10, dizendo que não há objeto

     

    Option Explicit

    Dim objOU, objUser, objRootDSE
    Dim strOU, strHomeAtual, strLogin
    Dim numTotal

    Set objRootDSE = GetObject("LDAP://RootDSE")
    strOU = "OU=Alunos,OU=Cidade,OU=Unidades,OU=Teste,DC=UFPR," & objRootDSE.Get("DefaultNamingContext")

    set objOU = GetObject("LDAP://" & strOU )
    numTotal = 0
    strHomeAtual = ""

    For each objUser in objOU

     If objUser.class="user" Then

      strLogin = objUser.Get("sAMAccountName")

      objUser.Put "scriptPath", ""
      objUser.Put "homeDirectory", "\\uergs-ttt-fs\home\" & strLogin
      objUser.Put "homeDrive", "H:"
      objUser.SetPassword
      objUser.SetInfo
     
      numTotal = numTotal +1

     End if

    next
    WScript.Echo "( " & numTotal & " ) usuários alterados"
    WScript.Quit

     

     

    Qq auxilio é bem vindo.

     

    Mto grato.

     

    Abraço,

    sexta-feira, 1 de junho de 2007 14:52
  • Este é o seu nome de dominio completo ? DC=UFPR

    Cara usa o adsiedit.msc para vc coletar toda a informação.

    sexta-feira, 1 de junho de 2007 16:20
  • Ola Pessoal, boa tarde!

     

    Graças a Deus funcionou o script porém não aplicou e alterou os campos do AD.

     

    Ele emitiu o resultado de tantos usuários alterados, porém nada de trocar

     

     

    Option Explicit

    Dim objOU, objUser, objRootDSE
    Dim strOU, strHomeAtual, strLogin
    Dim numTotal

    Set objRootDSE = GetObject("LDAP://RootDSE")
    strOU = "OU=Funcionarios,OU=Unidade de Cascavel,OU=Unidades,OU=Ufpr," & objRootDSE.Get("DefaultNamingContext")

    set objOU = GetObject("LDAP://" & strOU )
    numTotal = 0
    strHomeAtual = ""

    For each objUser in objOU

     If objUser.class="user" Then

      strLogin = objUser.Get("sAMAccountName")

      objUser.Put "scriptPath", "uergs-crr.bat"
      objUser.Put "homeDirectory", "\\serv-teste-fs\home\" & strLogin
      objUser.Put "homeDrive", "H:"
      objUser.SetPassword("teste")
     
      numTotal = numTotal +1

     End if

    next
    WScript.Echo "( " & numTotal & " ) usuários alterados"
    WScript.Quit

     

     

    Apliquei o mesmo a partir de minha estação aqui no serviço e tb direto no servidor da filial, porém sem resultados.

     

    Alguém saberia me dizer o que poderia estar acontecendo..

    segunda-feira, 4 de junho de 2007 17:35
  • Olá.

    Assim como a outra mensagem, também recomendo checar se a estrutura de OUs corresponde à string LDAP que você está usando. Recomendo também cortar o rootDSE e colocar a string que ele gera na mão mesmo, só pra testar.

    Pela mensagem de erro, sobra só a possibilidade desse caminho não existir.

    []s,

    Vinicius Canto
    MVP Scripting


    terça-feira, 5 de junho de 2007 03:40
    Moderador
  • Ola Pessoal,

     

    Creio que não há problema com a string de conexão  com LDAP visto que se consegue encontrar exatamente os 200 usuários que tenho aqui.

     

    Não ocorre erro nenhum.. O caminho existe e creio que emitiria erro..

     

    Porém vou fazer o teste inserindo a string.

     

    Abraço,

     

     

    terça-feira, 5 de junho de 2007 12:20
  • Ok. Dando certo ou não, depois retorne com o resultado...


    []s,


    Vinicius Canto
    MVP Scripting
    quarta-feira, 6 de junho de 2007 04:51
    Moderador
  • Ola Pessoal, bom dia!

     

    Infelizmente eu tentei inserir direto a string no LDAP porém não funcionou..

     

    O script emite a mensagem exata de usuários (objetos) contidos na OU porém não altera nenhum..

     

    Option Explicit

    Dim objOU, objUser, objRootDSE
    Dim strOU, strHomeAtual, strLogin
    Dim numTotal


    set objOU = GetObject("LDAP://OU=Funcionarios,OU=Unidade de Taguatingal,OU=Unidades,OU=CNB,DC=CNB")
    numTotal = 0
    strHomeAtual = ""

    For each objUser in objOU

     If objUser.class="user" Then

      objUser.Put "scriptPath", "uergs-crr.bat"
      objUser.Put "homeDirectory", "\\uergs-tgt-fs\home\" & objUser.Get("sAMAccountName")
      objUser.Put "homeDrive", "H:"
      
      numTotal = numTotal +1

     End if

    next
    WScript.Echo "( " & numTotal & " ) usuários alterados"
    WScript.Quit

     

    Se alguém tiver mais alguma idéia, agradeceria..

    Não sei se teria que executar este script no controlador de domínio master..

     

    Grato pela atenção.

     

    Um abraço.

     

    quarta-feira, 6 de junho de 2007 14:47
  • Tenta colocar um objUser.Save logo abaixo da linha que vc muda o homedrive.
    Não lembro de cabeça... mas acho que o nome do método que tá faltando é Save. Em todo caso, qualquer script que usa ADSI tem isso e é fáicl achar.

    objUser.Put "homeDrive", "H:"
    objUser.Save


    []s,


    Vinicius Canto
    quinta-feira, 7 de junho de 2007 05:12
    Moderador
  • Ola Pessoal,

     

    Graças a Deus funcionou bem o script.

     

    Realmente, conforme citado pelo Vinicius, faltava o comando de Save para ele. Então eu utilizei a função

    objUser.SetInfo

     

    E, graças a Deus,  foi.

     

    Agradeço a atenção de todos.

     

    Abraço e bom final de semana! 

     

    sexta-feira, 8 de junho de 2007 14:44
  • Eu sabia que eu tava errando... o certo é SetInfo mesmo. Ele que devolve as opções pro AD.

    []s,

    Vinicius Canto
    MVP Scripting
    sexta-feira, 8 de junho de 2007 15:55
    Moderador
  • Ola Pessoal,

     

    Me surgiu um outro detalhe, mas não sei se é relacionado ao AD.

     

    Tenho um ambiente no qual possuo um Windows 2000 Server como Domain Controller e o Windows 2003 como file server.

     

    O script realmente realizou a alteração de todos os campos dos objetos usuários, porém ele não realiza a criação do seu respectivo home.

     

    As permissões estão setadas corretamente.

     

    A criação do home ocorre quando o usuário loga, independente do sistema operacional utilizado?

     

    Se alguém tiver alguma indicação, desde já agradeço.

     

     

     

    segunda-feira, 11 de junho de 2007 18:40
  • A resposta eu achei faz um tempo no fórum também: não. Via script, o Windows não cria a pasta, até onde eu me lembro. Quem cria a pasta é a interface gráfica, quando vc clica no ok.

    A saída, nesse caso, é criar a pasta por scripting mesmo... e é tranquilo. Veja nessa página como você faz para criar pastas:

    http://msdn.microsoft.com/library/en-us/script56/html/481d39c7-dbd3-4cfb-b416-8187d73eb9d6.asp

    --
    Vinicius Canto <scripterbr_at_gmail_dot_com>
    MVP Visual Developer - Scripting
    MCP Windows 2000 Server, Windows XP e SQL Server 2000
    Bacharelando em Ciências da Computação - USP

    Blog sobre scripting: http://viniciuscanto.blogspot.com
    quinta-feira, 14 de junho de 2007 05:12
    Moderador
  • Ola Pessoal e Vinícius, bom dia!

     

    Graças a Deus funcionou e gostaria de perguntar mais alguma coisa:

     

    Teria como fazer um tratamento para pasta já existente.

    Por exemplo, quando tiver a pasta já existente passar para o próximo usuário??

     

    Estou com o seguinte script:

     

    Option Explicit

    Dim objOU, objUser, objRootDSE
    Dim strOU, strHomeAtual, strLogin
    Dim numTotal


    Function CreateFolder(strlogin)

       Dim selecionar_objeto, criar_pasta

       Set selecionar_objeto = CreateObject("Scripting.FileSystemObject")

       Set criar_pasta = selecionar_objeto.CreateFolder("\\server-teste-fs\home\" & strlogin)

       CreateFolder = criar_pasta.Path

    End Function


    Set objRootDSE = GetObject("LDAP://RootDSE")
    strOU = "OU=Alunos,OU=Unidade de POA,OU=Unidades,OU=Caxias," & objRootDSE.Get("DefaultNamingContext")

    set objOU = GetObject("LDAP://" & strOU )
    numTotal = 0
    strHomeAtual = ""

    For each objUser in objOU

     If objUser.class="user" Then

      strLogin = objUser.Get("sAMAccountName")

      objUser.Put "scriptPath", " "
      objUser.Put "homeDirectory", "\\server-teste-fs\home\" & strLogin
      objUser.Put "homeDrive", "H:"
      CreateFolder(strlogin)
      numTotal = numTotal +1

     End if

    next

     

    WScript.Echo "( " & numTotal & " ) usuários alterados"
    WScript.Quit

    terça-feira, 19 de junho de 2007 14:54
  •  

    Ola Pessoal, boa tarde!

     

    Graças a Deus funcionou o script para verificar pastas existentes e criar pastas novas conferindo se existe ou não.

     

    Existe a função FolderExists para verificar se exite ou não a pasta.

    Adiciono mais  1 link que foi útil para resolução deste caso ;-)

     

    Fonte: http://authors.aspalliance.com/brettb/FileAndFolderCheckers.asp

    sexta-feira, 6 de julho de 2007 18:22