locked
Script para mapear pasta home do usuário no servidor e outras unidade de rede RRS feed

  • Pergunta

  • Prezados,

     

    Gostaria de um script VBS para mapear a pasta home do usuário e outras pasta de rede.

    Ex:

    G: em %username% em srv01\users

    K: Grupos em srv01

    J: Publica em srv01

     

    Importante o script excluir todos os mapeamento de rede antes de mapear novamente para não da erros.

     

    Tenho testado sem sucesso um esquema de permissão NTFS/COMPARTILHAMENTO para fazer a seguinte operação:

    Se o user pertencer ao grupo comp_financeiro ele ira além de mapear unidade K: como todos, visualizar somente a pasta Financeiro e ter permissões de escrita nela.

     

    Se o user pertencer ao grupo comp_vendas ele ira além de mapear unidade K: como todos, visualizar somente a pasta vendas e ter permissões de escrita nela.

     

    Eu trabalha assim em outra empresa mais nao me lembro como foi realizada as config de compartilhamento/NTFS.

     

    Alguém se habilita?

     

    Desde já muito obrigado.

    quinta-feira, 24 de junho de 2010 21:30

Respostas

  • Pedro,

    o Tópico é velho, mas talvez algumas pessoas já tenham vindo atras desta informação.

    Para deletar mapeamentos já existente:

    Antes do código que mapeia a unidade, chame a procedure:

    rem ## Executa a procedure remove(), que remove os mapeamentos ##
    call remove


    Ao fim do Script, adicione as seguintes linhas

    rem ## Procedure respnsavel por remover os mapeamentos. Não Remove as unidades A, C e D
    Sub remove()
    Dim filesys, drv, drvcoll, drvlist, vol
    Dim letter

    Set filesys = CreateObject("Scripting.FileSystemObject")
    Set drvcoll = filesys.Drives

    For Each drv in drvcoll

    rem ## captura a lista de drives mapeados atualmente
    drvlist = drvlist & drv.DriveLetter

    letter = drv.DriveLetter & ":"

                    Select Case drv.DriveLetter
           Case "A"
           Case "C"
    Case "D"
    Case " "
                    Case Else
    objNet.RemoveNetworkDrive letter, true 
                    End Select
                    Next
    End Sub

    Aí esta o código em .VBS para deletar os mapeamentos já existente.

    Lembre-se: O Script gera erro caso o usuário que executar o script tenha algum Pendrive ou dispositivo que gere Leasing de alguma Letra.

    • Sugerido como Resposta Caio Vilas Boas domingo, 4 de novembro de 2012 21:27
    • Marcado como Resposta Caio Vilas Boas domingo, 4 de novembro de 2012 21:27
    quarta-feira, 4 de julho de 2012 19:36
  • dim UserObj
    dim objNetwork

    set objNetwork=CreateObject("WScript.Network")

    set UserObj = GetObject("WinNT://" & objNetwork.UserDomain & "/" & objNetwork.UserName)

    For Each Group In UserObj.groups

    'Baseado no nome do Grupo em que o usuário é membro, alguns drivers serão mapeados, inclusive impressoras

    'Nós comparamos aqui Maiúsculas para não ter nenhuma confusão ou erro
    Select Case UCASE(Group.Name)

    Case "DIRETORIA"
    objNetwork.MapNetworkDrive "R:", "\\SERVIDOR-DT\DIRETORIA"

    Case "TI"

    objNetwork.MapNetworkDrive "S:", "\\SERVIDOR-DT\SOLUTION"
    objNetwork.MapNetworkDrive "X:", "\\SERVIDOR-DT\ALMOXARIFADO"
    objNetwork.MapNetworkDrive "N:", "\\SERVIDOR-DT\CONTABIL"
    objNetwork.MapNetworkDrive "P:", "\\SERVIDOR-DT\COMPRAS"
    objNetwork.MapNetworkDrive "M:", "\\SERVIDOR-DT\COMERCIAL"
    objNetwork.MapNetworkDrive "R:", "\\SERVIDOR-DT\DIRETORIA"
    objNetwork.MapNetworkDrive "F:", "\\SERVIDOR-DT\FINANCEIRO"
    objNetwork.MapNetworkDrive "K:", "\\SERVIDOR-DT\BKPSBD"
    objNetwork.MapNetworkDrive "G:", "\\SERVIDOR-DT\FISCAL"


    Case "SOLUTION"
    objNetwork.MapNetworkDrive "S:", "\\SERVIDOR-DT\SOLUTION"
    objNetwork.MapNetworkDrive "K:", "\\SERVIDOR-DT\BKPSBD"


    Case "PROSPECTA"
    objNetwork.MapNetworkDrive "N:", "\\SERVIDOR-DT\CONTABIL"



    Case "COMPRAS"
    objNetwork.MapNetworkDrive "P:", "\\SERVIDOR-DT\COMPRAS"


    Case "FINANCEIRO"
    objNetwork.MapNetworkDrive "F:", "\\SERVIDOR-DT\FINANCEIRO"



    Case "FISCAL"
    objNetwork.MapNetworkDrive "G:", "\\SERVIDOR-DT\FISCAL"


    Case "ALMOXARIFADO"
    objNetwork.MapNetworkDrive "X:", "\\SERVIDOR-DT\ALMOXARIFADO"



    Case "COMERCIAL"
    objNetwork.MapNetworkDrive "M:", "\\SERVIDOR-DT\COMERCIAL"



    End Select
    Next

    'Mapeamente geral da empresa para todos os usuários

    objNetwork.MapNetworkDrive "T:", "\\SERVIDOR-DT\TEMPORARIOS"

    .....

    o Script acima verifica a qual OU o usuario pertence e determina quais os mapeamentos que ele deve ter, se ele pertencer a mais de uma OU tbm carregará ...

    • Sugerido como Resposta Caio Vilas Boas quarta-feira, 21 de novembro de 2012 05:15
    • Marcado como Resposta Caio Vilas Boas quarta-feira, 21 de novembro de 2012 05:15
    terça-feira, 20 de novembro de 2012 17:33
  • Por que VBS?

    Utilize um scrip .bat para realizar esta tarefa.

    ----
    rem Scriptlogon.bat
    @echo off

    rem Exclui todas unidades:

    net use * /del /y

    rem Mapeia compartilhamentos de rede:

    net use G: \\svr01\users\%USERNAME%
    net use K: \\svr01\grupos
    net use J: \\svr01\publico

    rem End of scriplogon.bat
    ----


    MCTS-Windows Server 2008 Network Infrastructure, Configuring
    • Marcado como Resposta Caio Vilas terça-feira, 21 de setembro de 2010 04:59
    sexta-feira, 25 de junho de 2010 18:12
  • Olá Pedro,

    Bom, primeiro vamos a utilização do comando Net Use:

    Para mapear uma unidade de rede por linha de comando, você deve utilizar o comando Net Use. A sintaxe do comando é net use x: \\servidor\compartilhamento, onde X: representa a letra que representará o compartilhamento.

    Para deletar uma unidade de rede por linha de comando, você usa o comando net use /delete x:, onde X: representa a letra da unidade de rede que será deletada.


    Aplicando ao seu cenário, crie 3 scripts: um para mapear a unidade K:, um para mapear o compartilhamento do Financeiro, e um último para o compartihamento do Vendas. Tome o cuidado em todos os scripts de, antes da linha que cria o mapeamento, deletar uma possível unidade de rede com a mestra letra já existente. Como não tenho acesso a estrutura do seu AD, vou imaginar a seguinte:

    Domínio xxx.local
         -OU: Departamentos
              -OU: Financeiro
              -OU: Vendas
      
    Crie 3 GPOs, uma para a OU Departamentos, outra para a OU Financeiro e uma última para a OU Vendas. Para finalizar, edite cada uma das GPOs associando os scripts necessários: Script para mapear a unidade K: na GPO da OU Departamentos, script para mapear o compartilhamento do financeiro na GPO da OU Financeiro, e por aí vai.


    Caso tenha dúvidas em como realizar algum dos procedimentos, consulte a Technet Library:

    http://technet.microsoft.com/pt-br/library/cc739591(WS.10).aspx
    http://technet.microsoft.com/pt-br/library/cc775970(WS.10).aspx
    http://support.microsoft.com/kb/308582/pt-br



    Caso a reposta tenha resolvido seu problema, por favor marque esse post como "Resposta" para que esse Thread se encerre.

    Espero ter ajudado.

    Atenciosamente,


    Caio Vilas Boas 
    Microsoft Certified Trainer
    www.itprogroup.com.br - Comunidade Técnica

    • Marcado como Resposta Adriel Gavazza quarta-feira, 31 de outubro de 2012 02:49
    terça-feira, 30 de outubro de 2012 03:51
  • Olá Pedro,

    Não sou especialista em VBS, mas por programar em Java, entendo a linguagem a nível de leitura estrutural de scripts. Você está correto em dizer que não há nenhuma linha que exclua possíveis compartilhamentos já existentes.

    Agora, o script .bat que te expliquei funciona perfeitamente, com segurança a nível de domínio, já que todo o processo de formação do token de permissionamento é feito pelo Domain Controller. Porque você não quer usar script .bat?

    De qualquer forma, ambas as linguagens conseguem chegar na mesma solução. Caso aceite utilizar o .bat, acredito que este thread esteja finalizado :). Se não, publique este script VBS no MSDN para o pessoal de lá analisar também.



    Caso a reposta tenha resolvido seu problema, por favor marque esse post como "Resposta" para que esse Thread se encerre.

    Espero ter ajudado.

    Atenciosamente,


    Caio Vilas Boas 
    Microsoft Certified Trainer
    www.itprogroup.com.br - Comunidade Técnica

    • Marcado como Resposta Adriel Gavazza quarta-feira, 31 de outubro de 2012 02:49
    terça-feira, 30 de outubro de 2012 03:56

Todas as Respostas

  • Por que VBS?

    Utilize um scrip .bat para realizar esta tarefa.

    ----
    rem Scriptlogon.bat
    @echo off

    rem Exclui todas unidades:

    net use * /del /y

    rem Mapeia compartilhamentos de rede:

    net use G: \\svr01\users\%USERNAME%
    net use K: \\svr01\grupos
    net use J: \\svr01\publico

    rem End of scriplogon.bat
    ----


    MCTS-Windows Server 2008 Network Infrastructure, Configuring
    • Marcado como Resposta Caio Vilas terça-feira, 21 de setembro de 2010 04:59
    sexta-feira, 25 de junho de 2010 18:12
  • Obrigado pela ajuda Caio.

    Um amigo da ex-empresa me mandou o seguinte  script:

    '********************************************************************************
    ' 
    ' Script de Logon
    ' Criado por
    ' 
    '********************************************************************************
    Option Explicit
    On Error Resume Next
    
    
    ' Variaveis utilizadas
    Dim objNet, objMember, objGroup, objFacultyGroup, objPTGroup, objGrupo4
    Dim strCurrentUser, strUser, WshShell, username, objshell, oEnv
    Dim objgrupo1, objGrupo2, objGrupo3
    
    
    
    'Verifica o ID do usuario logado
    Set objNet = CreateObject("Wscript.Network")
    strCurrentUser = ""
    Do While strCurrentUser = ""
    	strCurrentUser = objNet.UserName
    Loop
    
    On Error Goto 0
    
    '* Mapeando Drives de Rede Padrao
    
    set WshShell = createobject("wscript.shell")
    username = WshShell.expandenvironmentstrings("%username%")
    Set objNet = Wscript.CreateObject("WScript.Network")
    
    On Error Resume Next
    objNet.MapNetworkDrive "G:","\\srvpcf01\users\" & username
    objNet.MapNetworkDrive "H:","\\srvpcf01\apps"
    objNet.MapNetworkDrive "J:","\\srvpcf01\publica"
    objNet.MapNetworkDrive "K:","\\srvpcf01\grupos"
    
    
     
    '**************************************************************
    '* Funcao IsMember                      *
    '* Verifica se o usuario existe no grupo           *
    '**************************************************************
    
    Function IsMember(strUser, objGroup)
    	IsMember = False
    	For Each objMember In objGroup.Members
    		If UCase(strUser) = UCase(objMember.Name) Then
    			IsMember = True
    			Exit Function
    		Else
    		End If
    	Next
    End Function

    Ainda nao testei mas pelo que vi e pelo pouco que entendo nao tem nada que exclua os mapeamentos atuais antes de mapear.

    Não queria usar scripts BAT.

     

    OBS: Eu retirei algumas linhas no script que não servem para o meu caso.

    sexta-feira, 25 de junho de 2010 18:33
  • Pedro,

    o Tópico é velho, mas talvez algumas pessoas já tenham vindo atras desta informação.

    Para deletar mapeamentos já existente:

    Antes do código que mapeia a unidade, chame a procedure:

    rem ## Executa a procedure remove(), que remove os mapeamentos ##
    call remove


    Ao fim do Script, adicione as seguintes linhas

    rem ## Procedure respnsavel por remover os mapeamentos. Não Remove as unidades A, C e D
    Sub remove()
    Dim filesys, drv, drvcoll, drvlist, vol
    Dim letter

    Set filesys = CreateObject("Scripting.FileSystemObject")
    Set drvcoll = filesys.Drives

    For Each drv in drvcoll

    rem ## captura a lista de drives mapeados atualmente
    drvlist = drvlist & drv.DriveLetter

    letter = drv.DriveLetter & ":"

                    Select Case drv.DriveLetter
           Case "A"
           Case "C"
    Case "D"
    Case " "
                    Case Else
    objNet.RemoveNetworkDrive letter, true 
                    End Select
                    Next
    End Sub

    Aí esta o código em .VBS para deletar os mapeamentos já existente.

    Lembre-se: O Script gera erro caso o usuário que executar o script tenha algum Pendrive ou dispositivo que gere Leasing de alguma Letra.

    • Sugerido como Resposta Caio Vilas Boas domingo, 4 de novembro de 2012 21:27
    • Marcado como Resposta Caio Vilas Boas domingo, 4 de novembro de 2012 21:27
    quarta-feira, 4 de julho de 2012 19:36
  • Olá Pedro,

    Bom, primeiro vamos a utilização do comando Net Use:

    Para mapear uma unidade de rede por linha de comando, você deve utilizar o comando Net Use. A sintaxe do comando é net use x: \\servidor\compartilhamento, onde X: representa a letra que representará o compartilhamento.

    Para deletar uma unidade de rede por linha de comando, você usa o comando net use /delete x:, onde X: representa a letra da unidade de rede que será deletada.


    Aplicando ao seu cenário, crie 3 scripts: um para mapear a unidade K:, um para mapear o compartilhamento do Financeiro, e um último para o compartihamento do Vendas. Tome o cuidado em todos os scripts de, antes da linha que cria o mapeamento, deletar uma possível unidade de rede com a mestra letra já existente. Como não tenho acesso a estrutura do seu AD, vou imaginar a seguinte:

    Domínio xxx.local
         -OU: Departamentos
              -OU: Financeiro
              -OU: Vendas
      
    Crie 3 GPOs, uma para a OU Departamentos, outra para a OU Financeiro e uma última para a OU Vendas. Para finalizar, edite cada uma das GPOs associando os scripts necessários: Script para mapear a unidade K: na GPO da OU Departamentos, script para mapear o compartilhamento do financeiro na GPO da OU Financeiro, e por aí vai.


    Caso tenha dúvidas em como realizar algum dos procedimentos, consulte a Technet Library:

    http://technet.microsoft.com/pt-br/library/cc739591(WS.10).aspx
    http://technet.microsoft.com/pt-br/library/cc775970(WS.10).aspx
    http://support.microsoft.com/kb/308582/pt-br



    Caso a reposta tenha resolvido seu problema, por favor marque esse post como "Resposta" para que esse Thread se encerre.

    Espero ter ajudado.

    Atenciosamente,


    Caio Vilas Boas 
    Microsoft Certified Trainer
    www.itprogroup.com.br - Comunidade Técnica

    • Marcado como Resposta Adriel Gavazza quarta-feira, 31 de outubro de 2012 02:49
    terça-feira, 30 de outubro de 2012 03:51
  • Olá Pedro,

    Não sou especialista em VBS, mas por programar em Java, entendo a linguagem a nível de leitura estrutural de scripts. Você está correto em dizer que não há nenhuma linha que exclua possíveis compartilhamentos já existentes.

    Agora, o script .bat que te expliquei funciona perfeitamente, com segurança a nível de domínio, já que todo o processo de formação do token de permissionamento é feito pelo Domain Controller. Porque você não quer usar script .bat?

    De qualquer forma, ambas as linguagens conseguem chegar na mesma solução. Caso aceite utilizar o .bat, acredito que este thread esteja finalizado :). Se não, publique este script VBS no MSDN para o pessoal de lá analisar também.



    Caso a reposta tenha resolvido seu problema, por favor marque esse post como "Resposta" para que esse Thread se encerre.

    Espero ter ajudado.

    Atenciosamente,


    Caio Vilas Boas 
    Microsoft Certified Trainer
    www.itprogroup.com.br - Comunidade Técnica

    • Marcado como Resposta Adriel Gavazza quarta-feira, 31 de outubro de 2012 02:49
    terça-feira, 30 de outubro de 2012 03:56
  • dim UserObj
    dim objNetwork

    set objNetwork=CreateObject("WScript.Network")

    set UserObj = GetObject("WinNT://" & objNetwork.UserDomain & "/" & objNetwork.UserName)

    For Each Group In UserObj.groups

    'Baseado no nome do Grupo em que o usuário é membro, alguns drivers serão mapeados, inclusive impressoras

    'Nós comparamos aqui Maiúsculas para não ter nenhuma confusão ou erro
    Select Case UCASE(Group.Name)

    Case "DIRETORIA"
    objNetwork.MapNetworkDrive "R:", "\\SERVIDOR-DT\DIRETORIA"

    Case "TI"

    objNetwork.MapNetworkDrive "S:", "\\SERVIDOR-DT\SOLUTION"
    objNetwork.MapNetworkDrive "X:", "\\SERVIDOR-DT\ALMOXARIFADO"
    objNetwork.MapNetworkDrive "N:", "\\SERVIDOR-DT\CONTABIL"
    objNetwork.MapNetworkDrive "P:", "\\SERVIDOR-DT\COMPRAS"
    objNetwork.MapNetworkDrive "M:", "\\SERVIDOR-DT\COMERCIAL"
    objNetwork.MapNetworkDrive "R:", "\\SERVIDOR-DT\DIRETORIA"
    objNetwork.MapNetworkDrive "F:", "\\SERVIDOR-DT\FINANCEIRO"
    objNetwork.MapNetworkDrive "K:", "\\SERVIDOR-DT\BKPSBD"
    objNetwork.MapNetworkDrive "G:", "\\SERVIDOR-DT\FISCAL"


    Case "SOLUTION"
    objNetwork.MapNetworkDrive "S:", "\\SERVIDOR-DT\SOLUTION"
    objNetwork.MapNetworkDrive "K:", "\\SERVIDOR-DT\BKPSBD"


    Case "PROSPECTA"
    objNetwork.MapNetworkDrive "N:", "\\SERVIDOR-DT\CONTABIL"



    Case "COMPRAS"
    objNetwork.MapNetworkDrive "P:", "\\SERVIDOR-DT\COMPRAS"


    Case "FINANCEIRO"
    objNetwork.MapNetworkDrive "F:", "\\SERVIDOR-DT\FINANCEIRO"



    Case "FISCAL"
    objNetwork.MapNetworkDrive "G:", "\\SERVIDOR-DT\FISCAL"


    Case "ALMOXARIFADO"
    objNetwork.MapNetworkDrive "X:", "\\SERVIDOR-DT\ALMOXARIFADO"



    Case "COMERCIAL"
    objNetwork.MapNetworkDrive "M:", "\\SERVIDOR-DT\COMERCIAL"



    End Select
    Next

    'Mapeamente geral da empresa para todos os usuários

    objNetwork.MapNetworkDrive "T:", "\\SERVIDOR-DT\TEMPORARIOS"

    .....

    o Script acima verifica a qual OU o usuario pertence e determina quais os mapeamentos que ele deve ter, se ele pertencer a mais de uma OU tbm carregará ...

    • Sugerido como Resposta Caio Vilas Boas quarta-feira, 21 de novembro de 2012 05:15
    • Marcado como Resposta Caio Vilas Boas quarta-feira, 21 de novembro de 2012 05:15
    terça-feira, 20 de novembro de 2012 17:33