none
Criar Pasta para Usuários em FIleServer. RRS feed

  • Pergunta

  •  

    Boa Boite.

    Mais uma vez gostaria de agradecer a todos que apoiam o TechNet.

     

    Estou com a seguinte necessidade:

     

    Tenho um Ad com muitos usuários, e gostaria de criar um script para que crie uma pasta com o Nome de cada  usuário do Ad  em um caminho na rede \\sileserver\geral. Essa pasta não será a pasta hne do usuário, será apenas uma pasta na rede para ele. Gostaria tambem que esse script mapeasse para o usuário o diretório dele.

     

     

    Isso é possivel? Qual seria o script, pois não sei ainda como criá-los e em que evento ele deverá ser acionado?

     

    Me ajudem, pois é muito importante para o controle da Rede.

    Obrigado.

     

     

    segunda-feira, 11 de agosto de 2008 01:22

Respostas

  • Olá Laércio, tudo bem ?

     

    Primeiro marque o post caso tenha sido util.

     

    Amigo uma dica troque a letra do mapeamento b: para qualquer outra, porque está letra é reservada para o SO, pode ser por isso que não está funcionando.

     

    Segundo substitua esta linha:

     

    objCommand.CommandText = _
        "SELECT ADsPath FROM 'LDAP://DC=XXX,DC=XXX,DC=XXX,DC=XXX' WHERE objectCategory='user' "
       
    Set objRecordSet = objCommand.Execute

     

    por esta e vê se funciona:

     

    objCommand.CommandText = _
        "SELECT Name FROM 'LDAP://ou=xxxx,dc=xxxx,dc=xxxx' WHERE objectCategory='user' " 
    Set objRecordSet = objCommand.Execute

     

    Att.

     

    Leonardo Duarte

     

    segunda-feira, 25 de agosto de 2008 21:19

Todas as Respostas

  • Olá Laercio, blza ?

     

    Bom para o seu caso iremos necessitar de 2 scritps. Um vai criar as pastas e outro o mapeamento, bom vamos lá.

     

    1º - No seu servidor de arquivos crie uma pasta por exemplo c:\teste e dentro dela crie arquivo chamado users.txt dentro deste arquivo coloque os nomes dos seus usuários em cada linha, você também pode exportar seus usuários através do AD pelo menu action - export list. Criado o seu arquivo ele deve ficar desta forma como mostrado em abaixo, ou seja, cada usuário ficará em uma linha.

     

    Users.txt

     

    user1

    user2

    user3

     

    2º - Depois de criado este arquivo vamos criar o script que vai ler o conteúdo deste arquivo e vai criar as pastas baseado neste arquivo, este script vamos salva-lo com .bat também dentro da pasta c:\teste.

     

    Cria_pastas.bat

     

    for /F %%i in (users.txt) do mkdir c:\geral\%%i

     

    3º - Criado o arquivo cria_pastas.bat basta executa-lo e veremos a criação das pasta dentro do caminho c:\geral, ou seja este script vai criar todas as pastas baseando-se nos nomes que estão dentro do arquivo users.txt. No exemplo estamos executando este script no nosso servidor de arquivos.

     

    Agora no seu DC (domain controller) vamos criar o outro script que vai mapear as pastas de acordo com os usuários e salva-lo na pasta netlogon ou de sua preferência, lembrando que esta pasta deve ser compartilhada.

     

    Nome do script: mapeia.bat

     

    Contéudo do Script:

     

    net use x: \\nomedoseuservidor\geral\%username%

     

    o comando net use ira mapear a pasta do usuário que está no servidor de arquivos, ou seja, ele vai procurar dentro da pasta geral aquilo que corresponda a variavel %username%.

     

    4º - Agora você deve criar um GPO para aplicar o script mapeia.bat para os usuário quando eles fizerem logon, ou seja crie uma OU, mova os usuários para dentro desta OU e crie a GPO aplicando para o usuário e não para computador. Clicando em edit na guia Group Policy vc vai navegar até o caminho:

     

    User Configuration - Windows Settings - Scripts (logon / logoff) - no nosso caso vamos escolher logon e basta adicionarmos o caminho onde está o script mapeia.bat.

     

    Ex: \\dc\netlogon\mapeia.bat

          \\dc\pastacompartilhada\mapeia.bat

     

    Obs: Não esqueça de verificar as permissões no servidor de arquivos, verifique se os usuário tem as devidas permissões nas pastas e lembre-se é mais aconselhavel atribuir permissões aos grupos e não aos usuários.

     

    Espero ter ajudado.

     

    Leonardo Duarte (BH) - MCP / MCSA

     

    Por favor marque este post caso ele tenha sido útil.

     

     

     

     

     

     

     

     

    segunda-feira, 11 de agosto de 2008 21:44
  • Boa Noite Eduardo

    Obrigado pela dica!

    Estou usando o script abaixo, mas ele esta criando pasta com todos os usuários do Ad, inclusive os inativos e usuários do IIS entre outros, gostaria de saber se existe a possibiidade de determianr qual OU que quero que seja buscado os usuários, tentei alterar o select mas não tive sucesso, tem algum dica?

     

     

     

    on Error Resume Next

    Dim oNet
    bForce = "True"
    bUpdateProfile = "True"


    Set oNet = CreateObject("WScript.Network")

    oNet.RemoveNetworkDrive "b:", bForce, bUpdateProfile
    oNet.MapNetworkDrive "b:", "\\localhost\Transferencia"

    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 ADsPath FROM 'LDAP://DC=XXX,DC=XXX,DC=XXX,DC=XXX' WHERE objectCategory='user' "
       
    Set objRecordSet = objCommand.Execute
    objRecordSet.MoveFirst

    Do Until objRecordSet.EOF
     strPath = objRecordSet.Fields("AdsPath").Value
      Set objuser = GetObject(strpath)
     

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objFolder = objFSO.CreateFolder("b:\"&objuser.cn)
      
      objRecordSet.MoveNext

    Loop

    oNet.RemoveNetworkDrive "b:", bForce, bUpdateProfile

     

     

    terça-feira, 12 de agosto de 2008 22:50
  • Prezado Leonardo,

     

    Tem um detalhe que preciso tirar duvida, seu script pega so o primeiro nome, eu queria utilizar o campo NOME e SOBRENOME, coloquei dentro do TXT os nomes dessa forma, o que tenho que alterar?

     

    Obrigado!

    segunda-feira, 25 de agosto de 2008 20:42
  • Olá Laércio, tudo bem ?

     

    Primeiro marque o post caso tenha sido util.

     

    Amigo uma dica troque a letra do mapeamento b: para qualquer outra, porque está letra é reservada para o SO, pode ser por isso que não está funcionando.

     

    Segundo substitua esta linha:

     

    objCommand.CommandText = _
        "SELECT ADsPath FROM 'LDAP://DC=XXX,DC=XXX,DC=XXX,DC=XXX' WHERE objectCategory='user' "
       
    Set objRecordSet = objCommand.Execute

     

    por esta e vê se funciona:

     

    objCommand.CommandText = _
        "SELECT Name FROM 'LDAP://ou=xxxx,dc=xxxx,dc=xxxx' WHERE objectCategory='user' " 
    Set objRecordSet = objCommand.Execute

     

    Att.

     

    Leonardo Duarte

     

    segunda-feira, 25 de agosto de 2008 21:19