none
Scripts de acordo com area depto RRS feed

  • Pergunta

  •  

    Ola Pessoal

     

    Estou precisando criar um arquivo vbs para mapear os diretorios de acordo com o grupo do usuario juntamente com a impressora

     

    Eu criei o vbs para instalar as impressoras funcionaram caso alguem precise envio sem problemas!

     

    Abs

    sexta-feira, 24 de outubro de 2008 19:03

Todas as Respostas

  •  

    Olá,

     

    Faça o seguinte, copie e cole as linhas abaixo em um arquivo texto e salve-se com extensão .VBS:

     

    Code Snippet

    '

    'Tiago Belo - 25102008 - tiagobelo@gmail.com

    '

    'Declarando as variáveis
    Option Explicit
    Dim strDriveLetter, strAlpha, intAlpha, intCount, strDNSDomain, strList
    Dim objNetwork, objShell, objSysInfo, objUser, objGroup, strGroup, strGroupPath, strGroupName, bUpdateProfile, bForce
    Dim CheckDrive, DriveExists, intDrive, strUserDN, arrGroups, arrGroup
    Dim objRootLDAP, objmemberOf

    'Obtendo  informações sobre o domínio
    Set objRootLDAP = GetObject("LDAP://RootDSE")
    strDNSDomain = objRootLDAP.Get("DefaultNamingContext")

    'Definindo valores para as variáveis
    strDriveLetter = "H:"
    strAlpha = "HIJLMNOPQRSUV"
    intAlpha = 0
    intCount = 0
    err.number= vbEmpty
    Set objShell = CreateObject("WScript.Shell")
    Set objNetwork = CreateObject("WScript.Network")
    Set CheckDrive = objNetwork.EnumNetworkDrives()
    Set objSysInfo = CreateObject("ADSystemInfo")
    strUserDN = objSysInfo.UserName
    Set objUser = GetObject("LDAP://" & strUserDN)
    arrGroups = objUser.memberOf
    bForce = "True"
    bUpdateProfile = "True"

    'Inicio - Removendo unidades
    'Set objShell = CreateObject("WScript.Shell")
    'Set objNetwork = CreateObject("WScript.Network")
    'Set CheckDrive = objNetwork.EnumNetworkDrives()
    On Error Resume Next
    DriveExists = False

    For intCount = 1 To 16
       DriveExists = False
          For intDrive = 0 To CheckDrive.Count - 1 Step 2
            If CheckDrive.Item(intDrive) = strDriveLetter _
            Then DriveExists = True
          Next
      intAlpha = intAlpha + 1
     
      If DriveExists = True Then objNetwork.RemoveNetworkDrive strDriveLetter, bforce, bUpdateProfile
      strDriveLetter = Mid(strAlpha, intAlpha,1) & ":"
      If DriveExists = False Then DriveExists = True
    Next
    'Fim - Removendo unidades

    'Inicio do bloco de programacao que realiza o mapeamento dos diretórios de acordo com os grupos ao qual o usuário é membro
    strDriveLetter = "H:"
    strAlpha = "HIJLMNOPQRSUV"
    intAlpha = 0
    intAlpha = intAlpha + 1

    'Início - Verificacao dos grupos ao qual o usuário é membro

    'No bloco IF abaixo é feito uma verificação e é apresentado uma mensagem caso o usuário não pertença a grupo algum
     If IsEmpty(arrGroups) Then
         Wscript.Echo "Este usuário não esta associado a um grupo de segurança. Por favor, procure o departamento de informática."
    'No bloco ElseIF abaixo é feito uma verificação caso o retorno da verificação quantos aos grupos venha em formato string. Assim sendo, o tratamento será diferente para a verificação dos grupos.
     ElseIf (TypeName(arrGroups) = "String") Then
     objmemberOf  = objUser.GetEx("memberOf")
     For Each objGroup in objmemberOf
      objGroup = Mid(objGroup, 4, 330)
         arrGroup = Split(objGroup, "," )
         strList = strList & arrGroup(0)

    'Aqui é informado como na estrutura abaixo o grupo e a este eh associado a subrotina
         Select Case strList
      Case "G Funcionarios Informatica"
       Call GFuncionariosInformatica()
    'Fim - Aqui é informado como na estrutura abaixo o grupo e a este eh associado a subrotina

     End Select
     
     Next 
    'No bloco Else abaixo o procedimento adotado para a verificação quantos aos grupos é diferente pois baseia-se no formato do retorno, que deve ter sido como array.
     Else
     For Each strGroup in objUser.MemberOf
      strGroupPath = "LDAP://" & strGroup
      Set objGroup = GetObject(strGroupPath)
      strGroupName = objGroup.CN

    'Aqui é informado como na estrutura abaixo o grupo e a este eh associado a subrotina 
      Select Case strGroupName
      Case "G Funcionarios Informatica"
       Call GFuncionariosInformatica()
      End Select
    'FIM - Aqui é informado como na estrutura abaixo o grupo e a este eh associado a subrotina

     Next
     End If
    'Fim - Verificacao dos grupos ao qual o usuário é membro

    'Inicio - Criacao das sub rotinas para os grupos
     Sub GFuncionariosInformatica()
             strDriveLetter = Mid(strAlpha, intAlpha,1) & ":"
       objNetwork.MapNetworkDrive strDriveLetter, "\\servidor1\compartilhamento", True
       intAlpha = intAlpha + 1
       strDriveLetter = Mid(strAlpha, intAlpha,1) & ":"
                objNetwork.MapNetworkDrive strDriveLetter, "\\servidor2\compartilhamento", True
       intAlpha = intAlpha + 1
       strDriveLetter = Mid(strAlpha, intAlpha,1) & ":"
                objNetwork.MapNetworkDrive strDriveLetter, "\\servidor3\compartilhamento", True
       intAlpha = intAlpha + 1
    End Sub

    'Fim - Criacao das sub rotinas para os grupos

    'Mapeamentos fixos de areas comuns
    objNetwork.MapNetworkDrive "T:", "\\SERVIDOR5\Forms", True   
    objNetwork.MapNetworkDrive "X:", "\\SERVIDOR6\Documentos", True   

    WScript.Quit(1)

     

     

     

    Este é o script que utilizo. Ele mapei das unidades de rede H: até V: (como foi definido) de acordo com o grupo de segurança ao qual o usuário pertence

     

    Por favor, marque este post como resposta "útil" se assim Lhe tiver sido.

     

    Um abraço,

     

    Tiago.

    • Sugerido como Resposta Ilano sexta-feira, 7 de outubro de 2011 03:13
    • Não Sugerido como Resposta Fábio JrModerator sexta-feira, 13 de janeiro de 2012 11:05
    sábado, 25 de outubro de 2008 11:12
  • Tiago, boa tarde.

     

     

    Tentei usar este script seu e ele não mapeou os grupos que tenho. Quando eu executo ele ocorre p erro na linha 9 caracter 1. Resolvi este problema comentando esta linha. Só que a parte do mapeamento do grupo não funciona. O que devo fazer para fazê-lo funcionar o ucolocar algo para apresentar o erro?

     

     

    Abraço

     

    • Sugerido como Resposta Ilano sexta-feira, 7 de outubro de 2011 03:13
    • Não Sugerido como Resposta Fábio JrModerator sexta-feira, 13 de janeiro de 2012 11:05
    segunda-feira, 27 de outubro de 2008 16:56
  • Olá!

     

    Por favor, poste aqui a linha que apresenta o erro. Se Você utiliza um controlador de domínio, este script funcionará perfeitamente.

     

    Até+

     

    Tiago.

     

    • Sugerido como Resposta Ilano sexta-feira, 7 de outubro de 2011 03:13
    • Não Sugerido como Resposta Fábio JrModerator sexta-feira, 13 de janeiro de 2012 11:05
    segunda-feira, 27 de outubro de 2008 17:26