none
Script VBS para usuários de um departamento RRS feed

  • Discussão Geral

  • Boa tarde a todos, estou precisando de um script para ser adicionado no logon dos usuários (de preferência em VBS) que eu possa mapear unidades já compartilhadas e com as permissões definidas no file server. Seria mais ou menos assim:

    Usuário 1 do departamento do RH, quando logar, já venha mapeado a pasta publica (\\servidor\publico), a pasta geral do departamento em questão (no caso \\servidor\rh), e a pasta que apenas o usuário e o gerente do departamento têm acesso (\\servidor\rh\usuario1).

    Pensei em criar um único VBS para TODOS os departamentos e funcionários da empresa, mas acho que pecaria em performance, então devo apenas criar por departamentos, ter um VBS por departamento, como rh.vbs, financeiro.vbs, e assim por diante.

    Quem souber de algo do tipo, agradeço.

    abraços,

    segunda-feira, 17 de janeiro de 2011 15:49

Todas as Respostas

  • Pedro,

    Um script para TODOS não teria impacto na performance não. Abaixo está o script que você precisa. Coloquei quatro exemplos nesse script:

    Inicialmente ele mapeia a pasta que apenas o usuário e o gerente tem acesso (desde que essa pasta tenha o mesmo nome de logon do usuário, coloquei assim porque essa é a forma mais comum e disseminada em scripts)

    Depois ele testa os grupos que o usuário faz parte e vai mapeando os drivers para esses grupos. Caso o usuario faça parte apenas do grupo Recursos Humanos (O script testa o nome (cName) do grupo, por isso cuidado com erros de digitação) ele vai mapear somente a pasta do RH. Se o usuário fizer parte de mais de um grupo ele vai mapear as pastas de todos esses grupos.

    Tenha atenção apenas para caso um usuário seja membro de mais de um grupo "setorial" as letras das unidades atribuidas a esses compatilhamentos no script sejam diferentes.

    A quantidade de grupos e testes fica a seu critério, coloquei três (Financeiro, Recursos Humanos, e Operacional) apenas para entendimento do script.

    Se for útil, classifique votando como útil.

    ***********************************************

    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\"& objUserName

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

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

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

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

    End Select
    Next

    ***************************************************

    Qualquer dúvida post para que possamos lhe ajudar.

    ______________________________________
    Elmo Baraúna (MCP - MCDST - MCSA - MCT)

    terça-feira, 18 de janeiro de 2011 04:08
  • Bom dia Elmo, muitíssimo obrigado pela atenção e o script realmente é show, após ter lido e entendido, gostaria de saber se é possível eu acrescentar um if ou até um for antes do "for each strgroup in objmemberof" para direcionar dentro das OUs que possuo, sendo uma OU com o nome de PR, outra com BH e por último SP, onde é dividido as filiais e matriz da empresa, e tanto a matriz quanto as filiais há os mesmos departamentos, porém com mapeamentos direcionados à servidores diferentes, como eu poderia fazer um if ou um for antes, direcionando o usuário de acordo com a OU que ele pertence?
    terça-feira, 18 de janeiro de 2011 11:07
  • Bom dia Pedro.

    Dá uma olhada nesse "Script" (http://www.kixtart.org) que ele faz isso que você quer e muito mais. Aqui na empresa utilizamos ele na boa.


    Problemas com som? CLIQUE AQUI! - Guia criado pelo Moderador Fábio.
    ----------------
    Abraços,
    Pietro.
    terça-feira, 18 de janeiro de 2011 11:08
  • Bom dia Elmo,

    Testei numa base de testes minha aquie e não consegui visualizar como o gerente do departamento, por exemplo, RH, teria acesso às pastas de seus empregados. Aqui eu usei o seguinte script para poder testar (no caso do grupo RH), segue o script:

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

    'Diferenciando se o usuário é a Luciana.horta, se sim, realiza o mapeamento de todas as pastas, se não, realiza individual

    if (objUser.samaccountname = "luciana.horta") then
        objNetwork.MapNetworkDrive "l:", "\\servidor\rh$"
        'Renomeando o mapeamento para Recursos Humanos
        Set objShell = CreateObject("Shell.Application")
        objShell.NameSpace("L:").Self.Name = "Recursos Humanos"   

    'Usa o atributo do objuser para mapear a unidade previamente criada no servidor com o nome do usuário (padrão mega: nome.sobrenome)
        else objNetwork.MapNetworkDrive "l:", "\\servidor\rh$\"&objuser.samaccountname
             'Renomeando o mapeamento para o nome do usuário
             Set objShell = CreateObject("Shell.Application")
             objShell.NameSpace("L:").Self.Name = objuser.samaccountname   
    end if

    Onde a Luciana Horta é a gerente do departamento RH, e no file server coloquei as permissões corretamente, sendo que apenas a luciana tem acesso às pastas individuais dos funcionários.:

    terça-feira, 18 de janeiro de 2011 11:31
  • Boa tarde Pietro,

    fiz o download da versão 4.61, descompactei porém na hora de executar... NADA. não roda o programa... há algum segredo?

     

    [ ]´s,

    Pedro

    terça-feira, 18 de janeiro de 2011 15:12
  • Não tem muito segredo não Pedro. Basta você colocá-lo na pasta netlogon como se fosse um script normal, coloca-lo para ser executado no usuário, e o mais importante: configurar o arquivo kixtart. Abaixo eu segue um exemplo de como ficaria o arquivo.

    ;-------------------------------------------------------------------------------------------
    ;-------------------------------------------------------------------------------------------
    ;Login Script unificado para a rede (Nome da Empresa)
    ;-------------------------------------------------------------------------------------------
    ;-------------------------------------------------------------------------------------------
    ;debug on
    SETCONSOLE ("ALWAISONTOP")
    CLS
    Color r/n
    $rc=BOX(0, 0, 24, 78, "+-+|+-+| ")
    Color w/n
    small
    at (0,0) "Kixtart "+@KIX
    Color y/n
    small
    at (2,1) "Bem Vindo ao Domínio "+@DOMAIN
    at (3,1) "Voce esta conectado em " Color y+/n @wksta Color y/n " como " Color y+/n @userid
    Color y/n
    at (4,1) "Seu Sistema Operacional é o "+@PRODUCTTYPE
    Color g/n
    at (6,1) " A T E N Ç Ã O !!!!"   
    at (7,1) " M A P E A N D O   OS D R I V E S   D E   R E D E"
    ;sleep 5
    ;-------------------------------------------------------------------------------------------
    ;-------------------------------------------------------------------------------------------
    ;Deleta os mapeamentos antigos (Caso tenha algum)
    ;-------------------------------------------------------------------------------------------
    ;-------------------------------------------------------------------------------------------
    USE P: /d
    USE Q: /d
    USE R: /d
    USE S: /d
    USE T: /d
    USE K: /d
    USE Y: /d
    USE W: /d
    USE M: /d
    USE N: /d
    ;-------------------------------------------------------------------------------------------
    ;-------------------------------------------------------------------------------------------
    ;Mapeamento dos drives utilizando os grupos
    ;-------------------------------------------------------------------------------------------
    ;-------------------------------------------------------------------------------------------
    Color b/n
    small
    IF INGROUP ( "Domain Users " )
        Color b/n
        at (10,1) "Membro do Grupo Domain Users"
        USE P : "\\pasta compartilhada "
        IF @ERROR <> 0
           Color r+/n
           at (10,37) "Erro P :[" + @SERROR + "]"
        ELSE
           Color w+/n
           at (10,37) "Drive P : Mapeado com sucesso"
        ENDIF
    ENDIF

    :fim
    Sleep 4
    Exit

     

    Esse seria um exemplo de script. Nesse caso, todos os usuários que estão dentro do grupo Domain Users terão automaticamente uma pasta P:\pasta compartilhada. Para atribuir uma outra pasta para outro grupo, basta copiar o o mesmo bloco novamente:

    IF INGROUP ( "Domain Users " )
        Color b/n
        at (10,1) "Membro do Grupo Domain Users"
        USE P : "\\pasta compartilhada "
        IF @ERROR <> 0
           Color r+/n
           at (10,37) "Erro P :[" + @SERROR + "]"
        ELSE
           Color w+/n
           at (10,37) "Drive P : Mapeado com sucesso"
        ENDIF
    ENDIF

    e substituir a letra se for o caso e a pasta compartilhada. Agora, vou tentar fazer algo perto do seu cenário:

     

    ;-------------------------------------------------------------------------------------------
    ;-------------------------------------------------------------------------------------------
    ;Login Script unificado para a rede (Nome da Empresa)
    ;-------------------------------------------------------------------------------------------
    ;-------------------------------------------------------------------------------------------
    ;debug on
    SETCONSOLE ("ALWAISONTOP")
    CLS
    Color r/n
    $rc=BOX(0, 0, 24, 78, "+-+|+-+| ")
    Color w/n
    small
    at (0,0) "Kixtart "+@KIX
    Color y/n
    small
    at (2,1) "Bem Vindo ao Domínio "+@DOMAIN
    at (3,1) "Voce esta conectado em " Color y+/n @wksta Color y/n " como " Color y+/n @userid
    Color y/n
    at (4,1) "Seu Sistema Operacional é o "+@PRODUCTTYPE
    Color g/n
    at (6,1) " A T E N Ç Ã O !!!!"   
    at (7,1) " M A P E A N D O   OS D R I V E S   D E   R E D E"
    ;sleep 5
    ;-------------------------------------------------------------------------------------------
    ;-------------------------------------------------------------------------------------------
    ;Deleta os mapeamentos antigos (Caso tenha algum)
    ;-------------------------------------------------------------------------------------------
    ;-------------------------------------------------------------------------------------------
    USE P: /d
    USE Q: /d
    USE R: /d
    USE S: /d
    USE T: /d
    USE K: /d
    USE Y: /d
    USE W: /d
    USE M: /d
    USE N: /d
    ;-------------------------------------------------------------------------------------------
    ;-------------------------------------------------------------------------------------------
    ;Mapeamento dos drives utilizando os grupos
    ;-------------------------------------------------------------------------------------------
    ;-------------------------------------------------------------------------------------------
    Color b/n
    small
    IF INGROUP ( "Domain Users " )
        Color b/n
        at (10,1) "Membro do Grupo Domain Users"
        USE P : "\\servidor\publico "
        IF @ERROR <> 0
           Color r+/n
           at (10,37) "Erro P :[" + @SERROR + "]"
        ELSE
           Color w+/n
           at (10,37) "Drive P : Mapeado com sucesso"
        ENDIF
    ENDIF

    IF INGROUP ( "RH " )
        Color b/n
        at (10,1) "Membro do Grupo RH"
        USE W : "\\servidor\RH "
        IF @ERROR <> 0
           Color r+/n
           at (10,37) "Erro W :[" + @SERROR + "]"
        ELSE
           Color w+/n
           at (10,37) "Drive W : Mapeado com sucesso"
        ENDIF
    ENDIF

    IF INGROUP ( "RH_Usuario1 " )
        Color b/n
        at (10,1) "Membro do Grupo RH_usuario1"
        USE U : "\\servidor\Usuario1 "
        IF @ERROR <> 0
           Color r+/n
           at (10,37) "Erro U :[" + @SERROR + "]"
        ELSE
           Color w+/n
           at (10,37) "Drive U : Mapeado com sucesso"
        ENDIF
    ENDIF

    :fim
    Sleep 4
    Exit

    Pedro, acho que é isso, tente realizar uns testes com um usuário de teste mesmo e depois vai implementando ao seu gosto.


    Problemas com som? CLIQUE AQUI! - Guia criado pelo Moderador Fábio.
    ----------------
    Abraços,
    Pietro.
    terça-feira, 18 de janeiro de 2011 18:08