none
Script de Mapeamento em Bat RRS feed

  • Pergunta

  • Dividi na minha empresa os usuários em grupos, tipo GG_diretoria, GG_funcionarios e nesta empresa usam uma bat para mapear as unidades de rede que ja esta ultrapassada, preciso criar uma nova. Gostaria de criar um tipo (Se GG_diretoria mapeia L para \\servidor\diretoria, Se GG_funcionarios mapeia y para \\servidor\funcionarios).

    Existe uma maneira de criar isso em uma bat?

    obrigado

    sexta-feira, 11 de março de 2011 23:28

Respostas

  • Olá Junior,

    Nesse caso basta especificar sempre a mesma letra no script como no exemplo abaixo:

    ...

    Select Case strGroupName
    Case "GG_Financeiro"
    objNetwork.MapNetworkDrive "L:", "\\SERVIDOR\FINANCEIRO"

    Case "GG_Recursos Humanos"
    objNetwork.MapNetworkDrive "L:", "\\SERVIDOR\RH"

    ...

    A única questão nesse caso é que um mesmo usuário não poderá ser membro dos dois grupos (no exemplo acima GG_Financeiro e GG_Recursos Humanos).

    Entendeu?

     


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT
    segunda-feira, 14 de março de 2011 13:36
    Moderador

Todas as Respostas

  • hcjunior,

     

    Para mapeamento de unidade usamos o camando net use, para maiores detalhes digite no prompt net use /?

    Para sua resposta usaremos o comando NET use letra: \\caminho /persistent:yes

    Onde o /persistent:yes quer dizer que sempre manterá mapeado.

     

     []s


    Danilo Toscano | Se foi útil, por que não votar ;) | “Se não existe esforço, não existe progresso.”
    sábado, 12 de março de 2011 06:14
  • Entendi, mais eu gostaria de montar um script que mapearia pastas diferentes para determinados grupos especificados. Tipo:

    se GG_diretores mapeia \\servidor\diretores

    senao

    se GG_funcionarios mapeia \\servidor\funcionarios

    senao

    se GG_financeiro mapeia \\servidor\financeiro

    fim

    juntar o mapeamento para todos os grupos com pastas diferentes em um unico script .bat.

     

    sábado, 12 de março de 2011 18:12
  • HCJunior,

    O net use não vai fazer consulta se o usuário é de um grupo ou não. Normlamente eu resolvo esta situação fazendo um IF.

    if exist \\servidor\funcionarios\ net use L: \\servidor\funcionarios

    if exist \\servidor\diretoria\ net use y: \\servidor\diretoria

    E assim por diante. Com "if exist" Antes de mapear ele verifica se pasta existe na rede. Se ele tiver acesso a pasta (está no grupo), ele vai executar o mapeamento. Se ele não passar no teste, quer dizer que ele não tem acesso à pasta, não vai passar no IF, logo, não vai mapear. No geral este script roda bem e rápido.

     

    Outra solução mais atual é, no lugar de bat, usar group policy preferences, que cria estes mapeamentos de acordo com várias políticas, inclusive consultando se o cara faz parte do grupo ou não. Neste caso, via Group Policy Preferences vc substitui a bat, mas tem alguns requisitos.

    A policy tem que ser editada de um Windows 7 ou 2008. (não pode ser editada no 2003). E as estações precisam ser no mínimo XP com uma atualização chamada Group Policy Preference client side Extensions.

     

    boa sorte!


    Se foi útil, não se esqueça de Marcar como Resposta. Cláudio Costa - http://claudio-costa.blogspot.com
    sábado, 12 de março de 2011 20:06
    Moderador
  • Ola Junior,

    Uma outra opcao alem da que o Claudio postou e utilizar o script abaixo em vbs que verifica a qual grupo o usuario pertence e mapeia de acordo com a necessidade. No script abaixo, caso o usuario que esta se autenticando for do grupo chamado GG_Financeiro ele ira mapear a unidade X para o caminho "\\SERVIDOR\FINANCEIRO" e assim por diante.

    Espero que ajude.

     

    Set objSysInfo = CreateObject("ADSystemInfo")
    Set objNetwork = CreateObject("Wscript.Network")

    strUserPath = "LDAP://" & objSysInfo.UserName
    Set objUser = GetObject(strUserPath)

    objMemberOf = objUser.GetEx("MemberOf")
    objUserName = objUser.Get("givenName")

    For Each strGroup in objMemberOf
    strGroupPath = "LDAP://" & strGroup
    Set objGroup = GetObject(strGroupPath)
    strGroupName = objGroup.CN

    Select Case strGroupName
    Case "GG_Financeiro"
    objNetwork.MapNetworkDrive "X:", "\\SERVIDOR\FINANCEIRO"

    Case "GG_Recursos Humanos"
    objNetwork.MapNetworkDrive "Y:", "\\SERVIDOR\RH"

    Case "GG_Operacional"
    objNetwork.MapNetworkDrive "Z:", "\\SERVIDOR\OPERACIONAL"

    End Select
    Next


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT
    sábado, 12 de março de 2011 22:26
    Moderador
  • Elmo,

     

    Gostei deste em VBS, vou testar na segunda e dou uma resposta, era isso que eu queria fazer mesmo.

    Mais existe uma maneira de adicionar uma pasta para todos da minha rede neste script?

    Tipo: Alem das pastas ja mapeadas pelos grupos, todos os usuários da rede mapeiam \\servidor\publico essa pasta seria independente de grupo e etc.

     

    obrigado

    sábado, 12 de março de 2011 23:50
  • Junior,

    Tem sim, basta acrescentar a linha abaixo, que no exemplo seria mapeada a unidade "H" para o caminho:

    objNetwork.MapNetworkDrive "H:", "\\SERVIDOR\publico"

    No script que passei ficaria assim:

    Set objSysInfo = CreateObject("ADSystemInfo")
    Set objNetwork = CreateObject("Wscript.Network")

    strUserPath = "LDAP://" & objSysInfo.UserName
    Set objUser = GetObject(strUserPath)

    objMemberOf = objUser.GetEx("MemberOf")
    objUserName = objUser.Get("givenName")

    objNetwork.MapNetworkDrive "H:", "\\SERVIDOR\publico"

    For Each strGroup in objMemberOf
    strGroupPath = "LDAP://" & strGroup
    Set objGroup = GetObject(strGroupPath)
    strGroupName = objGroup.CN

    Select Case strGroupName
    Case "GG_Financeiro"
    objNetwork.MapNetworkDrive "X:", "\\SERVIDOR\FINANCEIRO"

    Case "GG_Recursos Humanos"
    objNetwork.MapNetworkDrive "Y:", "\\SERVIDOR\RH"

    Case "GG_Operacional"
    objNetwork.MapNetworkDrive "Z:", "\\SERVIDOR\OPERACIONAL"

    End Select
    Next

     

    Se lhe foi útil, vote!


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT
    sábado, 12 de março de 2011 23:56
    Moderador
  • Elmo, Esta perfeito o script. Só um detalhe se possivel. Gostaria de mapear sempre a mesma letra, unidade de rede. GG_FINANCEIRO L: \\servidor\financeiro GG_Diretor L: \\servidor\diretor Pois aqui, onde trabalho, sempre sera mapeado sempre na mesma unidade se pertencente a determinado grupo.
    segunda-feira, 14 de março de 2011 12:57
  • Olá Junior,

    Nesse caso basta especificar sempre a mesma letra no script como no exemplo abaixo:

    ...

    Select Case strGroupName
    Case "GG_Financeiro"
    objNetwork.MapNetworkDrive "L:", "\\SERVIDOR\FINANCEIRO"

    Case "GG_Recursos Humanos"
    objNetwork.MapNetworkDrive "L:", "\\SERVIDOR\RH"

    ...

    A única questão nesse caso é que um mesmo usuário não poderá ser membro dos dois grupos (no exemplo acima GG_Financeiro e GG_Recursos Humanos).

    Entendeu?

     


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT
    segunda-feira, 14 de março de 2011 13:36
    Moderador
  • Obrigado Elmo,

     

    Funcionou perfeito.

    segunda-feira, 14 de março de 2011 17:23
  • Elmo,

    Só uma duvida, existe um maneira de finalizar o script caso ja localize o grupo?

    Case "GG_Financeiro"
    objNetwork.MapNetworkDrive "L:", "\\SERVIDOR\FINANCEIRO"
    Finaliza / Go to fim

    Após cada grupo, se localizar va para o fim. Um comando para finalizar logo após os grupos?

    Valeu

    segunda-feira, 14 de março de 2011 18:33
  • Junior,

    Esse já é o comportamente padrão da função case. Assim que ele encontra a opção ele passa para a próxima instrução que no caso desse script é finalizar já que não temos outras funções.

     

    Se lhe foi útil, vote!


    Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT
    segunda-feira, 14 de março de 2011 20:31
    Moderador
  • Mais a proxima instrução sera um outro case. E quando o usuário esta em 2 grupos da problema, pois a unidade ja esta em uso.
    Se o usuário estiver nos dois grupos vai ser mapeado com a mesma letra, e gostaria de finalizar ao primeiro grupo localizado.

    Ex: Hugo pertence a GG_Financeiro e GG_Recursos Humanos, só iria mapear o primeiro CASE, a pasta \\servidor\Financeiro. Isso que eu precisava fazer neste script, pois existem muitos grupos e não consegui acertar ainda os usuários. E preciso tambem usar a mesma letra de mapeamento.

    Case "GG_Financeiro"
    objNetwork.MapNetworkDrive "L:", "\\SERVIDOR\FINANCEIRO"

    Case "GG_Recursos Humanos"
    objNetwork.MapNetworkDrive "L:", "\\SERVIDOR\RH"

    Entendeu o problema?

    segunda-feira, 14 de março de 2011 21:57
  • Mais a proxima instrução sera um outro case. E quando o usuário esta em 2 grupos da problema, pois a unidade ja esta em uso.
    Se o usuário estiver nos dois grupos vai ser mapeado com a mesma letra, e gostaria de finalizar ao primeiro grupo localizado.

    Ex: Hugo pertence a GG_Financeiro e GG_Recursos Humanos, só iria mapear o primeiro CASE, a pasta \\servidor\Financeiro. Isso que eu precisava fazer neste script, pois existem muitos grupos e não consegui acertar ainda os usuários. E preciso tambem usar a mesma letra de mapeamento.

    Case "GG_Financeiro"
    objNetwork.MapNetworkDrive "L:", "\\SERVIDOR\FINANCEIRO"

    Case "GG_Recursos Humanos"
    objNetwork.MapNetworkDrive "L:", "\\SERVIDOR\RH"

    Entendeu o problema?

    segunda-feira, 14 de março de 2011 21:57
  • Elmo,

    Resolvi o problema colocando no inicio do script "On Error Resume Next".

    Assim quando existem dois usuários e grupos diferentes o script mapeia o primeiro grupo encontrado e quando acha o segundo ele da erro e não mapeia vai para o final.

    Funcionou assim para mim.

    Obrigado

    terça-feira, 15 de março de 2011 11:08
  • Bom dia Senhores!

    Sou novo por aqui e não sou nenhum profundo conhecedor em vbs, mas vi a troca de informações de vcs e acredito que possoam me ajudar.

    Preciso de uns script que mapeie uma unidade de rede mas de um servidor em outro dominio, ou seja, quando eu realizo esse mapeamento na mão ele me solicita dominio\usuario e a senha.

    O que eu gosatria de fazer é um script que vai rodar no inicializar da estação abrinco a tela e solicitando a autenticação para o usuário, fiz uma bat com net use \\servidor e até que funcionou, mas se o usuário digitar a senha errada ele simplismente encerra o script e não autentica.

    Tens alguma sugestão para me dar?

    Obrigado por enquanto.

    Abraço!

    Ricardo Fonseca

    quinta-feira, 28 de abril de 2011 15:36
  • Stabranca,

     

    Aconselho que abra um novo tópico com dúvida, visto que esta já foi encerrada e tenho certeza que será atendido.

     

    abraço,


    Danilo Toscano - http://danilotoscano.wordpress.com | Se foi útil, por que não votar? ;) | “Se não existe esforço, não existe progresso.”
    domingo, 1 de maio de 2011 07:02
  • oi como eu poderia trocar de grupo para usuário.

    tenho 3 usuário. 

    E cada usuário tem acesso a um compartilhamento.



    K_cesar

    quarta-feira, 17 de abril de 2013 15:40
  • K cesar,

    Você poderia utilizar propriedades do usuário do AD, a aba Perfil, Opção Pasta Base e colocar a unidade e o mapeamento que você precisa.

    quarta-feira, 17 de abril de 2013 16:34
  • Hugo então não tem ad e uma maquina que fica separada da rede ela só acessa esse linux.

    E cada usuário acessa seu mapeamento no linux de acordo com o usuário.


    K_cesar

    sábado, 4 de maio de 2013 10:22