Renan Antonio Rodrigues
Script to add network printers at user logon
This VBScript will automate the installation process for your helpdesk area by automatically adding network printers, mapping shared folders as a local drive and copying shortcuts to the user's desktop. The best part is you will be able to easily manage it through Active Directory Groups.
All you have to do is to copy and paste the below code to a notepad file and save it as a vbs file. After that, you have to create a new gpo, and add the script at User Logon settings, as shown below:

Code:
'-----------========Função Main=======------------
On Error Resume Next
'--==Constantes e Variáveis==--
Const HKEY_CURRENT_USER = &H80000001
Public NomeDir(21), GrupoDir(21), LetraDir(21), UncDir(21), GrupoImp(8), UncImp(8), NomeAtalho(11), UncAtalho(11), GrupoAtalho(11)
Public objNetwork, objShellApp, objGroup
'---------Fim---------
'--==Valores dos Arrays de Diretório==--
'NOME EXIBIDO AO USUÁRIO DENTRO DO WINDOWS EXPLORER
NomeDir(0) = "Diretório - Depto_A"
NomeDir(1) = "Diretório - Depto_B"
NomeDir(2) = "Diretório - Depto_C"
NomeDir(3) = "Diretório - Depto_D"
NomeDir(4) = "Diretório - Depto_E"
NomeDir(5) = "Diretório - Depto_F"
NomeDir(6) = "Diretório - Depto_G"
NomeDir(7) = "Diretório - Depto_H"
NomeDir(8) = "Diretório - Depto_I"
NomeDir(9) = "Diretório - Depto_J"
NomeDir(10) = "Diretório - Depto_K"
NomeDir(11) = "Diretório - Depto_L"
NomeDir(12) = "Diretório - Depto_M"
NomeDir(13) = "Diretório - Depto_N"
NomeDir(14) = "Diretório - Depto_O"
NomeDir(15) = "Diretório - Depto_P"
NomeDir(16) = "Diretório - Depto_Q"
NomeDir(17) = "Diretório - Depto_R"
NomeDir(18) = "Diretório - Depto_S"
NomeDir(19) = "Diretório - Depto_T"
NomeDir(20) = "Diretório - Depto_U"
NomeDir(21) = "Diretório - Depto_V"
'NOME DOS GRUPOS QUE DEVEM SER CRIADOS NO AD CONTENDO OS USUÁRIOS
GrupoDir(0) = "Grupo Diretorios - Depto_A"
GrupoDir(1) = "Grupo Diretorios - Depto_B"
GrupoDir(2) = "Grupo Diretorios - Depto_C"
GrupoDir(3) = "Grupo Diretorios - Depto_D"
GrupoDir(4) = "Grupo Diretorios - Depto_E"
GrupoDir(5) = "Grupo Diretorios - Depto_F"
GrupoDir(6) = "Grupo Diretorios - Depto_G"
GrupoDir(7) = "Grupo Diretorios - Depto_H"
GrupoDir(8) = "Grupo Diretorios - Depto_I"
GrupoDir(9) = "Grupo Diretorios - Depto_J"
GrupoDir(10) = "Grupo Diretorios - Depto_K"
GrupoDir(11) = "Grupo Diretorios - Depto_L"
GrupoDir(12) = "Grupo Diretorios - Depto_M"
GrupoDir(13) = "Grupo Diretorios - Depto_N"
GrupoDir(14) = "Grupo Diretorios - Depto_O"
GrupoDir(15) = "Grupo Diretorios - Depto_P"
GrupoDir(16) = "Grupo Diretorios - Depto_Q"
GrupoDir(17) = "Grupo Diretorios - Depto_R"
GrupoDir(18) = "Grupo Diretorios - Depto_S"
GrupoDir(19) = "Grupo Diretorios - Depto_T"
GrupoDir(20) = "Grupo Diretorios - Depto_U"
GrupoDir(21) = "Grupo Diretorios - Depto_V"
'LETRAS QUE SERÃO MAPEADAS PARA OS USUÁRIOS
LetraDir(0) = "G:"
LetraDir(1) = "H:"
LetraDir(2) = "I:"
LetraDir(3) = "Z:"
LetraDir(4) = "J:"
LetraDir(5) = "M:"
LetraDir(6) = "N:"
LetraDir(7) = "P:"
LetraDir(8) = "Q:"
LetraDir(9) = "R:"
LetraDir(10) = "S:"
LetraDir(11) = "T:"
LetraDir(12) = "U:"
LetraDir(13) = "V:"
LetraDir(14) = "O:"
LetraDir(15) = "X:"
LetraDir(16) = "W:"
LetraDir(17) = "Y:"
LetraDir(18) = "K:"
LetraDir(19) = "M:"
LetraDir(20) = "L:"
LetraDir(21) = "A:"
'CAMINHO UNC DO COMPARTILHAMENTO
UncDir(0) = "\\servername\Depto_A"
UncDir(1) = "\\servername\Depto_B"
UncDir(2) = "\\servername\Depto_C"
UncDir(3) = "\\servername\Depto_D"
UncDir(4) = "\\servername\Depto_E"
UncDir(5) = "\\servername\Depto_F"
UncDir(6) = "\\servername\Depto_G"
UncDir(7) = "\\servername\Depto_H"
UncDir(8) = "\\servername\Depto_I"
UncDir(9) = "\\servername\Depto_J"
UncDir(10) = "\\servername\Depto_K"
UncDir(11) = "\\servername\Depto_L"
UncDir(12) = "\\servername\Depto_M"
UncDir(13) = "\\servername\Depto_N"
UncDir(14) = "\\servername\Depto_O"
UncDir(15) = "\\servername\Depto_P"
UncDir(16) = "\\servername\Depto_Q"
UncDir(17) = "\\servername\Depto_R"
UncDir(18) = "\\servername\Depto_S"
UncDir(19) = "\\servername\Depto_T"
UncDir(20) = "\\servername\Depto_U"
UncDir(21) = "\\servername\Depto_V"
'---------Fim---------
'--==Valores dos Arrays de Impressora==--
GrupoImp(0) = "Grupo Politicas_Impressoras - Administrativo"
GrupoImp(1) = "Grupo Politicas_Impressoras - Comercial A"
GrupoImp(2) = "Grupo Politicas_Impressoras - Comercial B"
GrupoImp(3) = "Grupo Politicas_Impressoras - Engenharia"
GrupoImp(4) = "Grupo Politicas_Impressoras - Pcp"
GrupoImp(5) = "Grupo Politicas_Impressoras - HP600_Compras"
GrupoImp(6) = "Grupo Politicas_Impressoras - 9800_Engenharia"
GrupoImp(7) = "Grupo Politicas_Impressoras - PRO400_Administrativo"
GrupoImp(8) = "Grupo Politicas_Impressoras - Comercial C"
UncImp(0) = "\\servername\administrativo"
UncImp(1) = "\\servername\comerciala"
UncImp(2) = "\\servername\comercialb"
UncImp(3) = "\\servername\engenharia"
UncImp(4) = "\\servername\pcp"
UncImp(5) = "\\servername\HP600_compras"
UncImp(6) = "\\servername\9800_engenharia"
UncImp(7) = "\\servername\PRO400_administrativo"
UncImp(8) = "\\servername\M402_COMERCIAL"
'---------Fim---------
'--==Valores dos Arrays de Atalhos==--
'DEVE CONTER AQUI O MESMO NOME DO ATALHO QUE SERÁ FEITO A CÓPIA DO CAMINHO ABAIXO
NomeAtalho(0) = "ATALHO1.lnk"
NomeAtalho(1) = "ATALHO2.lnk"
NomeAtalho(2) = "ATALHO3.lnk"
NomeAtalho(3) = "ATALHO4.lnk"
NomeAtalho(4) = "ATALHO5.lnk"
NomeAtalho(5) = "ATALHO6.lnk"
NomeAtalho(6) = "ATALHO7.lnk"
NomeAtalho(7) = "ATALHO8.url"
NomeAtalho(8) = "ATALHO9.url"
NomeAtalho(9) = "ATALHO10.lnk"
NomeAtalho(10) = "ATALHO11.rdp"
NomeAtalho(11) = "ATALHO12.url"
'LOCAL ONDE OS ATALHOS JÁ ESTEJAM CRIADOS E ARMAZENADOS, O SCRIPT APENAS FARÁ UMA CÓPIA DO MESMO
UncAtalho(0) = "\\servername\caminho\unc\ATALHO1.lnk"
UncAtalho(1) = "\\servername\caminho\unc\ATALHO2.lnk"
UncAtalho(2) = "\\servername\caminho\unc\ATALHO3.lnk"
UncAtalho(3) = "\\servername\caminho\unc\ATALHO4.lnk"
UncAtalho(4) = "\\servername\caminho\unc\ATALHO5.lnk"
UncAtalho(5) = "\\servername\caminho\unc\ATALHO6.lnk"
UncAtalho(6) = "\\servername\caminho\unc\ATALHO7.lnk"
UncAtalho(7) = "\\servername\caminho\unc\ATALHO8.url"
UncAtalho(8) = "\\servername\caminho\unc\ATALHO9.url"
UncAtalho(9) = "\\servername\caminho\unc\ATALHO10.lnk"
UncAtalho(10) = "\\servername\caminho\unc\ATALHO11.rdp"
UncAtalho(11) = "\\servername\caminho\unc\ATALHO12.url"
'GRUPO AD
GrupoAtalho(0) = "Grupo Politicas_Deploy - ATALHO1"
GrupoAtalho(1) = "Grupo Politicas_Deploy - ATALHO2"
GrupoAtalho(2) = "Grupo Politicas_Deploy - ATALHO3"
GrupoAtalho(3) = "Grupo Politicas_Deploy - ATALHO4"
GrupoAtalho(4) = "Grupo Politicas_Deploy - ATALHO5"
GrupoAtalho(5) = "Grupo Politicas_Deploy - ATALHO6"
GrupoAtalho(6) = "Grupo Politicas_Deploy - ATALHO7"
GrupoAtalho(7) = "Grupo Politicas_Deploy - ATALHO8"
GrupoAtalho(8) = "Grupo Politicas_Deploy - ATALHO9"
GrupoAtalho(9) = "Grupo Politicas_Deploy - ATALHO10"
GrupoAtalho(10) = "Grupo Politicas_Deploy - ATALHO11"
GrupoAtalho(11) = "Grupo Politicas_Deploy - ATALHO12"
'---------Fim---------
'---===Metodos Set e Get===---
Set objSysInfo = CreateObject("ADSystemInfo")
Set objNetwork = CreateObject("Wscript.Network")
Set objShellApp = CreateObject("Shell.Application")
Set objUser = GetObject("LDAP://" & objSysInfo.UserName)
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objWSH = CreateObject("WScript.Shell")
objDesktop = objWSH.SpecialFolders("Desktop")
'---------Fim---------
'CASO TENHA UM ATALHO PADRÃO QUE QUEIRA ADICIONAR PARA TODOS USUÁRIOS, CONFIGURE O MESMO ABAIXO
'OBS: SERÁ APLICADO PARA O GRUPO DE USUÁRIOS CONTIDO NO FILTRO DE SEGURANÇA DA GPO DESTE SCRIPT
'---===Copia atalho do servidor de arquivos para "Usuários Autenticados"===---
If Not objFSO.FileExists(objDesktop & "\" & "Server.lnk") Then
objFSO.CopyFile "\\nameserver\NETLOGON\Server.lnk", objDesktop & "\"
End If
'---------Fim---------
'---===Remove as Impressoras setadas no UncImp===---
For i = 0 To 7
objNetwork.RemovePrinterConnection(UncImp(i))
Next
'---------Fim---------
'---===Define o homepage dos navegadores, independente da versão do IE===---
objWSH.RegWrite "HKCU\SOFTWARE\Microsoft\Internet Explorer\Main\Start page", "http://seuwebsite.com.br", "REG_SZ"
'---------Fim---------
'---===Verifica se o Usuario pertence a um Array de grupos ou String===---
If IsArray(objUser.MemberOf) = False Then
Call Mapear(objUser.MemberOf)
Else
For Each Group In objUser.MemberOf
Call Mapear(Group)
Call Subgrupo(Group)
Next
End If
'---------Fim---------
'--------- Fim Da Função Main ---------
'-----------========Subrotinas=======------------
'---===Executa mapeamento de Diretórios, Impressoras e Softwares comparando os grupos ao que o usuario pertence===---
Sub Mapear(byVal MemberOf)
On Error Resume Next
' --== MAPEAMENTO DOS DIRETORIOS ==--
i = 0
For Each Dir In GrupoDir
If InStr(MemberOf, Dir) Then
objNetwork.RemoveNetworkDRIVE(LetraDir(i))
objNetwork.MapNetworkDrive LetraDir(i), UncDir(i)
objShellApp.NameSpace(LetraDir(i)).Self.Name = NomeDir(i)
End If
i = i + 1
Next
' --== MAPEAMENTO DAS IMPRESSORAS ==--
i = 0
For Each Imps In GrupoImp
If InStr(MemberOf, Imps) Then
objNetwork.AddWindowsPrinterConnection(UncImp(i))
'DEFININDO IMPRESSORAS PRINCIPAIS COMO PADRÃO
If InStr(MemberOf, GrupoImp(0)) Then
objNetwork.SetDefaultPrinter(UncImp(i))
ElseIf InStr(MemberOf, GrupoImp(1)) Then
objNetwork.SetDefaultPrinter(UncImp(i))
ElseIf InStr(MemberOf, GrupoImp(2)) Then
objNetwork.SetDefaultPrinter(UncImp(i))
ElseIf InStr(MemberOf, GrupoImp(3)) Then
objNetwork.SetDefaultPrinter(UncImp(i))
ElseIf InStr(MemberOf, GrupoImp(4)) Then
objNetwork.SetDefaultPrinter(UncImp(i))
ElseIf InStr(MemberOf, GrupoImp(5)) Then
objNetwork.SetDefaultPrinter(UncImp(i))
End If
End If
i = i + 1
Next
'---== MAPEAMENTO DOS SOFTWARES INTERNOS NA ÁREA DE TRABALHO ==---
i = 0
For Each Atalho In GrupoAtalho
If InStr(MemberOf, Atalho) Then
If Not objFSO.FileExists(objDesktop & "\" & (NomeAtalho(i))) Then
objFSO.CopyFile UncAtalho(i), objDesktop & "\"
End If
End If
i = i + 1
Next
End Sub
'---------Fim---------
'---===Executa mapeamento de Diretórios buscando usuários que estão em grupos aninhados===---
Sub Subgrupo(strcaminho)
Set objGroup = GetObject("LDAP://" & strCaminho)
objGroup.GetInfo
arrSubMembro = objGroup.GetEx("memberOf")
For Each strSubMember in arrSubMembro
Call Mapear(strSubMember)
Next
End sub
'---------Fim---------
'---------Fim das Subrotinas---------
'--------- Fim do Script ---------
For any doubts or suggestions, please leave a comment below.