code, html, digital

VBScript to add printers at user logon

VBScript to add printers at user logon

This VBScript to add printers at user logon 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:

vbscript to add printers

Code for VBScript to add printers:

'-----------========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

'---------End---------

'---------End Subrotinas---------

'--------- End Script ---------

References

Still need help with VBScript to add printers?

Running out of ideas or time to set up your VBScript to add printers at user logon? Please contact me here, I will be happy to provide you with a quick analysis for resolution and configuration, at a fair price. Or use the form below if you prefer:

Name
Email
Message
The form has been submitted successfully!
There has been some error while submitting the form. Please verify all form fields again.

As a seasoned expert in VBScript, I can attest to its enduring utility in network administration, particularly when it comes to managing printers across a Windows network. VBScript to add printers offers a robust and efficient method for adding printers programmatically, which can be a game-changer in large-scale environments.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top