• 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:


user-logon-gpo-settings

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.

Follow me

© 2023 by Nicola Rider.
Proudly created with
Wix.com
 

  • Branca Ícone LinkedIn