none
bat de Mapeamento de acordo com o DC conectado RRS feed

  • Pergunta

  • Prezados, boa tarde.

    Preciso de um script que faça o mapeamento de acordo com o DC que o usuário esteja conectado, vocês podem ajudar?

    Hoje utilizamos o script abaixo, porém não tem esse quesito do DC.

    On Error Resume Next

    Set Arquivo = createobject("scripting.filesystemobject")
    Set Rede = CreateObject("WScript.Network")
    Set ADSysInfo = CreateObject("ADSystemInfo")
    Set UsuarioAtual= GetObject("LDAP://" & ADSysInfo.UserName)
    Set oShell = CreateObject("Shell.Application")

    Grupo1 = LCase(Join(usuarioAtual.MemberOf))
    Grupo2 = LCase(usuarioAtual.MemberOf)
    grupo = grupo1 & grupo2
    'wscript.echo grupo
    Sub CriarMapeamento(letra,caminho)

        If Arquivo.folderexists(letra) then
           Rede.removenetworkdrive letra, true
        end if
        
        Rede.MapNetworkDrive letra, caminho

    End Sub

    If InStr(grupo, "cn=u_fis_todos") Then

       CriarMapeamento "h:","\\sv1\SHARES"
       oShell.NameSpace("h:\").Self.Name = "Shares" 
       CriarMapeamento "i:","\\sv1\indicadores"
       oShell.NameSpace("i:\").Self.Name = "Indicadores" 
       CriarMapeamento "p:","\\sv1\PUBLICO"
       oShell.NameSpace("p:\").Self.Name = "Publico" 
       CriarMapeamento "s:","\\sv1\Sistemas"
       oShell.NameSpace("S:\").Self.Name = "Sistemas" 
       CriarMapeamento "t:","\\sv2\Sistemas"
       oShell.NameSpace("t:\").Self.Name = "Sistemas" 

    ElseIf InStr(grupo, "cn=g_ssi_sede") Then
       
       CriarMapeamento "h:","\\sv1\SHARES"
       oShell.NameSpace("h:\").Self.Name = "Shares" 
       CriarMapeamento "i:","\\sv2\indicadores"
       oShell.NameSpace("i:\").Self.Name = "Indicadores" 
       CriarMapeamento "p:","\\sv3\PUBLICO"
       oShell.NameSpace("p:\").Self.Name = "Publico" 
       CriarMapeamento "q:","\\sv3\Qualidade"
       oShell.NameSpace("q:\").Self.Name = "Qualidade" 
       CriarMapeamento "r:","\\sv3\shares\ssi"
       oShell.NameSpace("r:\").Self.Name = "Geral" 
       CriarMapeamento "s:","\\sv4\Sistemas"
       oShell.NameSpace("s:\").Self.Name = "Sistemas" 

    ElseIf InStr(grupo, "cn=g_sai_sede") Then
       
       CriarMapeamento "h:","\\sv3\SHARES"
       oShell.NameSpace("h:\").Self.Name = "Shares" 
       CriarMapeamento "i:","\\sv3\indicadores"
       oShell.NameSpace("i:\").Self.Name = "Indicadores" 
       CriarMapeamento "p:","\\sv3\PUBLICO"
       oShell.NameSpace("p:\").Self.Name = "Publico" 
       CriarMapeamento "q:","\\sv1\Qualidade"
       oShell.NameSpace("q:\").Self.Name = "Qualidade" 
       CriarMapeamento "r:","\\sv1\shares\sai"
       oShell.NameSpace("r:\").Self.Name = "Geral" 
       CriarMapeamento "s:","\\sv1\Sistemas"
       oShell.NameSpace("s:\").Self.Name = "Sistemas" 

    ElseIf InStr(grupo, "cn=u_i_todos") Then

       CriarMapeamento "h:","\\sv4\SHARES"
       oShell.NameSpace("h:\").Self.Name = "Shares" 
       CriarMapeamento "p:","\\sv3\PUBLICO"
       oShell.NameSpace("p:\").Self.Name = "Publico" 
       CriarMapeamento "q:","\\sv2\Qualidade"
       oShell.NameSpace("q:\").Self.Name = "Qualidade" 
       CriarMapeamento "s:","\\sv2\Sistemas"
       oShell.NameSpace("s:\").Self.Name = "Sistemas" 
       CriarMapeamento "u:","\\sv2\Sistemas"
       oShell.NameSpace("u:\").Self.Name = "Sistemas" 

    end if

    Obrigado pelo apoio.

    sexta-feira, 21 de outubro de 2016 18:42

Todas as Respostas

  • Boa tarde Henrique,

    você pode usar o seguinte Cod

    Set oDomain = GetObject("LDAP://rootDSE")
    sDC = oDomain.Get("dnsHostName")
    Wscript.Echo "Usuário autenticado em: " & sDC


    ou usar Path 

    Set objShell = CreateObject("WScript.Shell")
    sLogonServer= objShell.ExpandEnvironmentStrings("%LOGONSERVER%")
    Wscript.Echo "Usuário autenticado em: "&  sLogonServer

    Veja se isso te ajuda...

    Como você não explicou se há diferenças de grupo de servidor para servidor.. fiz um exemplo de maneira generica..

    On Error Resume Next
    
    Set Arquivo = createobject("scripting.filesystemobject")
    Set Rede = CreateObject("WScript.Network")
    Set ADSysInfo = CreateObject("ADSystemInfo")
    Set UsuarioAtual= GetObject("LDAP://" & ADSysInfo.UserName)
    Set oShell = CreateObject("Shell.Application")
    
    Set oDomain = GetObject("LDAP://rootDSE")
    sDC = oDomain.Get("dnsHostName")
    Wscript.Echo "Usuário autenticado em: " & sDC
    
    
    If  sDC = "DC1" Then 
    	SetGroupConnectDC1()
    Elseif sDC = "DC2" Then 
    	SetGroupConnectDC2()
    End If
    
    Sub SetGroupConnectDC1()
    	On Error Resume Next
    	For Each sGroup in UsuarioAtual.MemberOf
    		Set oGroup = GetObject("LDAP://" & sGroup)
    		wscript.echo oGroup.CN
    		Select Case oGroup.CN
    			Case "u_fis_todos"
    				 CriarMapeamento "h:","\\sv1\SHARES"
    				oShell.NameSpace("h:\").Self.Name = "Shares"
    				 CriarMapeamento "i:","\\sv1\indicadores"
    				oShell.NameSpace("i:\").Self.Name = "Indicadores"
    				 CriarMapeamento "p:","\\sv1\PUBLICO"
    				oShell.NameSpace("p:\").Self.Name = "Publico"
    				 CriarMapeamento "s:","\\sv1\Sistemas"
    				oShell.NameSpace("S:\").Self.Name = "Sistemas"
    				 CriarMapeamento "t:","\\sv2\Sistemas"
    				oShell.NameSpace("t:\").Self.Name = "Sistemas"
    
    			Case "g_ssi_sede"
    				 CriarMapeamento "h:","\\sv1\SHARES"
    				oShell.NameSpace("h:\").Self.Name = "Shares"
    				 CriarMapeamento "i:","\\sv2\indicadores"
    				oShell.NameSpace("i:\").Self.Name = "Indicadores"
    				 CriarMapeamento "p:","\\sv3\PUBLICO"
    				oShell.NameSpace("p:\").Self.Name = "Publico"
    				 CriarMapeamento "q:","\\sv3\Qualidade"
    				oShell.NameSpace("q:\").Self.Name = "Qualidade"
    				 CriarMapeamento "r:","\\sv3\shares\ssi"
    				oShell.NameSpace("r:\").Self.Name = "Geral"
    				 CriarMapeamento "s:","\\sv4\Sistemas"
    				oShell.NameSpace("s:\").Self.Name = "Sistemas"
    
    			Case "g_ssi_sede"
    				 CriarMapeamento "h:","\\sv3\SHARES"
    				oShell.NameSpace("h:\").Self.Name = "Shares"
    				 CriarMapeamento "i:","\\sv3\indicadores"
    				oShell.NameSpace("i:\").Self.Name = "Indicadores"
       				 CriarMapeamento "p:","\\sv3\PUBLICO"
       				oShell.NameSpace("p:\").Self.Name = "Publico"
       				 CriarMapeamento "q:","\\sv1\Qualidade"
    				oShell.NameSpace("q:\").Self.Name = "Qualidade"
    				 CriarMapeamento "r:","\\sv1\shares\sai"
    				oShell.NameSpace("r:\").Self.Name = "Geral"
       				 CriarMapeamento "s:","\\sv1\Sistemas"
       				oShell.NameSpace("s:\").Self.Name = "Sistemas"
    
    			Case "u_i_todos"
    				 CriarMapeamento "h:","\\sv4\SHARES"
    				oShell.NameSpace("h:\").Self.Name = "Shares"
       				 CriarMapeamento "p:","\\sv3\PUBLICO"
       				oShell.NameSpace("p:\").Self.Name = "Publico"
       				 CriarMapeamento "q:","\\sv2\Qualidade"
       				oShell.NameSpace("q:\").Self.Name = "Qualidade"
       				 CriarMapeamento "s:","\\sv2\Sistemas"
       				oShell.NameSpace("s:\").Self.Name = "Sistemas"
       				 CriarMapeamento "u:","\\sv2\Sistemas"
       				oShell.NameSpace("u:\").Self.Name = "Sistemas"
    		End Select
    	Next
    End Sub
    
    Sub SetGroupConnectDC2()
    	On Error Resume Next
    	For Each sGroup in UsuarioAtual.MemberOf
    		Set oGroup = GetObject("LDAP://" & sGroup)
    		wscript.echo oGroup.CN
    		Select Case oGroup.CN
    			Case "u_fis_todos"
    				 CriarMapeamento "h:","\\sv1\SHARES"
    				oShell.NameSpace("h:\").Self.Name = "Shares"
    				 CriarMapeamento "i:","\\sv1\indicadores"
    				oShell.NameSpace("i:\").Self.Name = "Indicadores"
    				 CriarMapeamento "p:","\\sv1\PUBLICO"
    				oShell.NameSpace("p:\").Self.Name = "Publico"
    				 CriarMapeamento "s:","\\sv1\Sistemas"
    				oShell.NameSpace("S:\").Self.Name = "Sistemas"
    				 CriarMapeamento "t:","\\sv2\Sistemas"
    				oShell.NameSpace("t:\").Self.Name = "Sistemas"
    
    			Case "g_ssi_sede"
    				 CriarMapeamento "h:","\\sv1\SHARES"
    				oShell.NameSpace("h:\").Self.Name = "Shares"
    				 CriarMapeamento "i:","\\sv2\indicadores"
    				oShell.NameSpace("i:\").Self.Name = "Indicadores"
    				 CriarMapeamento "p:","\\sv3\PUBLICO"
    				oShell.NameSpace("p:\").Self.Name = "Publico"
    				 CriarMapeamento "q:","\\sv3\Qualidade"
    				oShell.NameSpace("q:\").Self.Name = "Qualidade"
    				 CriarMapeamento "r:","\\sv3\shares\ssi"
    				oShell.NameSpace("r:\").Self.Name = "Geral"
    				 CriarMapeamento "s:","\\sv4\Sistemas"
    				oShell.NameSpace("s:\").Self.Name = "Sistemas"
    
    			Case "g_ssi_sede"
    				 CriarMapeamento "h:","\\sv3\SHARES"
    				oShell.NameSpace("h:\").Self.Name = "Shares"
    				 CriarMapeamento "i:","\\sv3\indicadores"
    				oShell.NameSpace("i:\").Self.Name = "Indicadores"
       				 CriarMapeamento "p:","\\sv3\PUBLICO"
       				oShell.NameSpace("p:\").Self.Name = "Publico"
       				 CriarMapeamento "q:","\\sv1\Qualidade"
    				oShell.NameSpace("q:\").Self.Name = "Qualidade"
    				 CriarMapeamento "r:","\\sv1\shares\sai"
    				oShell.NameSpace("r:\").Self.Name = "Geral"
       				 CriarMapeamento "s:","\\sv1\Sistemas"
       				oShell.NameSpace("s:\").Self.Name = "Sistemas"
    
    			Case "u_i_todos"
    				 CriarMapeamento "h:","\\sv4\SHARES"
    				oShell.NameSpace("h:\").Self.Name = "Shares"
       				 CriarMapeamento "p:","\\sv3\PUBLICO"
       				oShell.NameSpace("p:\").Self.Name = "Publico"
       				 CriarMapeamento "q:","\\sv2\Qualidade"
       				oShell.NameSpace("q:\").Self.Name = "Qualidade"
       				 CriarMapeamento "s:","\\sv2\Sistemas"
       				oShell.NameSpace("s:\").Self.Name = "Sistemas"
       				 CriarMapeamento "u:","\\sv2\Sistemas"
       				oShell.NameSpace("u:\").Self.Name = "Sistemas"
    		End Select
    	Next
    End Sub
    
    Sub CriarMapeamento(letra,caminho)
        If Arquivo.folderexists(letra) then
           Rede.removenetworkdrive letra, true
        end if
        Rede.MapNetworkDrive letra, caminho
    End Sub
    



    att, Aparecido Deveza



    • Editado Aparecido Deveza sexta-feira, 21 de outubro de 2016 21:36
    • Marcado como Resposta HenriqueMandt segunda-feira, 24 de outubro de 2016 15:01
    • Não Marcado como Resposta HenriqueMandt segunda-feira, 24 de outubro de 2016 15:01
    sexta-feira, 21 de outubro de 2016 21:26
  • Olá Aparecido, bom dia.

    Primeiramente obrigado pela ajuda.

    No campo abaixo, no lugar de rootDSE, devo preencher com o domínio da empresa?

    Set oDomain = GetObject("LDAP://rootDSE")

    segunda-feira, 24 de outubro de 2016 14:58
  • Boa tarde,

    Não é necessário, ele obtém a informação de acordo com o DC que o usuário está autenticado. 


    att, Aparecido Deveza

    segunda-feira, 24 de outubro de 2016 19:29
  • Bom dia, Aparecido.

    Infelizmente não deu certo =/ ele identifica o DC que o usuário está conectado, mas não faz os mapeamentos.

    Já testei em mais de uma máquina....

    A necessidade desse script é em virtude de cada DC está conectado a um File server diferente, e para diminuir o tráfego na rede, queremos que o mapeamento seja realizado de acordo com a unidade (DC) que a pessoa esteja conectada.

    quinta-feira, 27 de outubro de 2016 11:36