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:
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 ---------
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:
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.
Check out more similar articles below
Microsoft 365 Setup: Practical Guide For IT Pros
Microsoft 365 Setup: Practical Step-by-Step Guide for IT Pros Welcome to Microsoft 365 Setup: Practical…
Ultimate Tutorial How to Deploy Hyper-V Failover Cluster
Ultimate Tutorial: How to deploy Hyper-V Failover Cluster This post aims to guidance you on…
How to configure NTP server in AD
How to configure NTP server in Active Directory, Step by step If you want to…
How to fix clients not showing up in WSUS
How to fix clients not showing up in WSUS If you are facing problems with…
The Ultimate Guide: What is DSRM in Active Directory
The Ultimate Guide: What is DSRM in Active Directory (Directory Services Restore Mode)? Directory Services…
How to add UPN suffix in Active Directory
How to add UPN suffix in Active Directory If you want to know how to…