none
Script em .vbs para mapear unidades de redes. RRS feed

  • Pergunta

  • Boa tarde pessoal, não entendo nada de .vbs e gostaria da ajuda do pessoal.

    Tenho um AD 2012 e nele gostaria de compartilhar com os usuarios algumas pastas através do .vbs.

    Quero fazer 3 compartilhamentos

    \\server12\home$ ( Aqui será o diretório que so o usuario tera permissão )

    \\server12\Grupo ( Aqui será onde todos os usuarios do grupo teram permissão de enchergar, editar )

    \\server12\Publico ( Aqui todos os usuarios do AD terão permissão de colocar e retirar arquivos )

    Gostaria que alguem que entenda bem me ajudasse a criar esse script.

    Vi GPO eu ate consegui, fazendo por modelo de herança, mais tenho de fazer isso para todos os grupos, acredito que via .vbs eu consiga fazer isso para todos os grupos em um unico arquivo.

    Espero ajuda. Obrigado.

    sexta-feira, 13 de fevereiro de 2015 17:02

Respostas

  • Ola boa tarde, em uma pesquisa por aqui mesmo consegui o script abaixo que estou testando e acho que irá me atender.


    on error resume next
    
    'Objetos
    Set WshNetwork = CreateObject("WScript.Network")
    set objShell   = CreateObject( "WScript.Shell" )
    
    strUserName = objShell.ExpandEnvironmentStrings("%username%")
    strUserDomain = objShell.ExpandEnvironmentStrings("%userdomain%")
    
    'Configura Dicionário de Grupos
    Set dicGrupo = CreateObject("Scripting.Dictionary")
    dicGrupo.CompareMode = 1
    ADSPath = strUserDomain & "/" & strUserName
    Set userPath = GetObject("WinNT://" & ADSPath & ",user")
    For Each listGroup in userPath.Groups
    	dicGrupo.Add listGroup.Name, "-"
    next
    
    
    'Inicio do Script
    
    if IsMember("nome do grupo 1") then
    
    	MapDrive "P:","\\SRV-QLIK\aplicacoes" 
    
    end if
    
    
    if IsMember("nome do grupo 2") then
    	
    	MapDrive "R:","\\SRVARQ01\ADMINISTRATIVO"
    	WshNetwork.AddWindowsPrinterConnection "\\SRV-IMP2.NEXUS.LOCAL\X-SGTG2"
    	WshNetwork.SetDefaultPrinter "\\SRV-IMP2.NEXUS.LOCAL\X-SGTG2"
       
    end if
    
    
    'Final do script
    
    ' *****************************************************
    ' Funções
    Function IsMember(groupName)
    	IsMember = cbool(dicGrupo.Exists(groupName))
    End Function
    
    Function MapDrive(DriveLetter, SharedPath)
    	On Error Resume Next
    	Set objNetwork = CreateObject("Wscript.Network")
    	if objNetwork.DriveExists(SharedPath) then
    		If objNetwork.DriveExists(DriveLetter) then
    			objNetwork.RemoveNetworkDrive DriveLetter, true, true
    		end if
    		objNetwork.MapNetworkDrive DriveLetter, SharedPath, true
    	end if
    
    end Function

    Queria saber como fazer para que ele faça o mapeamento da pasta do usuário, através de uma variável

    MapDrive "H:", "\\SRV-QLIK\%username%

    Queria algo assim, mais adicionei no script essa linha mais não funcionou, o compartilhamento do usuario não aparece.

    quarta-feira, 18 de fevereiro de 2015 15:03

Todas as Respostas

  • Mauricio,

    Crie seu arquivo .vbs adaptando o script abaixo às suas necessidades:

    Set objShell = CreateObject("WScript.Shell")
    
    set objExec = objShell.Exec("net use X: \\<servidor_remoto>\diretorio /persistent:yes /YES")

    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços,

    Durval Ramos
    Microsoft Partner | MTA | MCSA - SQL Server 2012 | MCSE - Data Platform
    ----------------------------------
    Se foi resolvido clique "Marcar como resposta" e se foi útil "Votar como Útil"

    sábado, 14 de fevereiro de 2015 15:50
  • Ola boa tarde, em uma pesquisa por aqui mesmo consegui o script abaixo que estou testando e acho que irá me atender.


    on error resume next
    
    'Objetos
    Set WshNetwork = CreateObject("WScript.Network")
    set objShell   = CreateObject( "WScript.Shell" )
    
    strUserName = objShell.ExpandEnvironmentStrings("%username%")
    strUserDomain = objShell.ExpandEnvironmentStrings("%userdomain%")
    
    'Configura Dicionário de Grupos
    Set dicGrupo = CreateObject("Scripting.Dictionary")
    dicGrupo.CompareMode = 1
    ADSPath = strUserDomain & "/" & strUserName
    Set userPath = GetObject("WinNT://" & ADSPath & ",user")
    For Each listGroup in userPath.Groups
    	dicGrupo.Add listGroup.Name, "-"
    next
    
    
    'Inicio do Script
    
    if IsMember("nome do grupo 1") then
    
    	MapDrive "P:","\\SRV-QLIK\aplicacoes" 
    
    end if
    
    
    if IsMember("nome do grupo 2") then
    	
    	MapDrive "R:","\\SRVARQ01\ADMINISTRATIVO"
    	WshNetwork.AddWindowsPrinterConnection "\\SRV-IMP2.NEXUS.LOCAL\X-SGTG2"
    	WshNetwork.SetDefaultPrinter "\\SRV-IMP2.NEXUS.LOCAL\X-SGTG2"
       
    end if
    
    
    'Final do script
    
    ' *****************************************************
    ' Funções
    Function IsMember(groupName)
    	IsMember = cbool(dicGrupo.Exists(groupName))
    End Function
    
    Function MapDrive(DriveLetter, SharedPath)
    	On Error Resume Next
    	Set objNetwork = CreateObject("Wscript.Network")
    	if objNetwork.DriveExists(SharedPath) then
    		If objNetwork.DriveExists(DriveLetter) then
    			objNetwork.RemoveNetworkDrive DriveLetter, true, true
    		end if
    		objNetwork.MapNetworkDrive DriveLetter, SharedPath, true
    	end if
    
    end Function

    Queria saber como fazer para que ele faça o mapeamento da pasta do usuário, através de uma variável

    MapDrive "H:", "\\SRV-QLIK\%username%

    Queria algo assim, mais adicionei no script essa linha mais não funcionou, o compartilhamento do usuario não aparece.

    quarta-feira, 18 de fevereiro de 2015 15:03
  • Bom dia..
    Aqui na empresa fiz um script em batch e tá funcionando normalmente..
    voce pode fazer o seguinte.


    @Echo off
    color A
    title 5%% - CONFIGURANDO A REDE, AGUARDE...
    echo ---------------------------------------------
    echo.
    echo Mapeando unidade de redes - Aguarde...
    echo.
    echo ---------------------------------------------
    
    net use L: /delete /yes
    net use L: \\IP_DO_SEU_SERVIDOR\PASTA
    net use O: /delete /yes
    net use O: \\IP_DO_SEU_SERVIDOR\PASTA
    net use s: /delete /yes
    net use s: \\IP_DO_SEU_SERVIDOR\PASTA
    net use u: /delete /yes
    Para mapear a pasta do usuário você pode fazer o seguinte, se tiver com o mesmo nome de login a pasta dele na rede..
    
    net use J: /delete /yes
    net use J: \\IP_DO_SEU_SERVIDOR\%username%\


    Se ajudou na sua solução, não esqueça de marcar como resposta !

    Abraços..


    segunda-feira, 9 de março de 2015 14:20