Usuário com melhor resposta
Script de Mapeamento em Bat

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
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- Marcado como Resposta Cláudio CostaModerator sexta-feira, 1 de abril de 2011 12:06
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.” -
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.
-
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 -
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 -
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
-
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
NextSe lhe foi útil, vote!
Elmo Baraúna, SSA-Ba - FSCTP / MCP / MCDST / MCSA / MCT -
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.
-
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- Marcado como Resposta Cláudio CostaModerator sexta-feira, 1 de abril de 2011 12:06
-
Obrigado Elmo,
Funcionou perfeito.
- Marcado como Resposta Hugo Carneiro Jr segunda-feira, 14 de março de 2011 17:23
- Não Marcado como Resposta Cláudio CostaModerator sexta-feira, 1 de abril de 2011 12:06
-
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 fimApós cada grupo, se localizar va para o fim. Um comando para finalizar logo após os grupos?
Valeu
-
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 -
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?
-
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?
-
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
-
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
-
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.” -
-
-