Usuário com melhor resposta
Script para mapear pasta home do usuário no servidor e outras unidade de rede

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 SubAí 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 /yrem 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 /yrem 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 SubAí 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