Justin Logan

Print Task Issues

Discussion created by Justin Logan on Nov 24, 2016

For the last few years, some of our computers would not print when the Print Task was executed. The oddest part about it would be, after an update, some computers would be begin to be able to execute the Print Task and others would stop. After some serious digging this week, the root cause was found and solved! The printer selection is case sensitive; i.e. the printer defined in the Task did not match the exact uppercase and lowercase format of the printers installed on some of our computers. This explains why Task execution would stop working, or start working, after updates that affected installed printers - Windows seems to be somewhat inconsistent with naming Printers when they get added or updated.


I updated the GetPrinter function in the Print Task script as follows:


Function GetPrinter(paperSize)


'Dims defined for case sensitive printer check


Dim WshNetwork As Object

Dim Printers As Object

Dim printer As Variant


    If [__printer_prseltype] = 2 Then

        Select Case paperSize

            Case 0

                GetPrinter = "[__printer_papsize_A]"

            Case 1

                GetPrinter = "[__printer_papsize_A]"

            Case 2

                GetPrinter = "[__printer_papsize_B]"

            Case 3

                GetPrinter = "[__printer_papsize_C]"

            Case 4

                GetPrinter = "[__printer_papsize_D]"

            Case 5

                GetPrinter = "[__printer_papsize_E]"

            Case 6

                GetPrinter = "[__printer_papsize_A0]"

            Case 7

                GetPrinter = "[__printer_papsize_A1]"

            Case 8

                GetPrinter = "[__printer_papsize_A2]"

            Case 9

                GetPrinter = "[__printer_papsize_A3]"

            Case 10

                GetPrinter = "[__printer_papsize_A4]"

            Case 11

                GetPrinter = "[__printer_papsize_A4]"

            Case 12

                GetPrinter = "[__printer_papsize_DEF]"

        End Select


        GetPrinter = "[__printer_prname]"

    End If


'Checking installed printers for match with PDM Task defined printer


Set WshNetwork = CreateObject("WScript.Network")

Set Printers = WshNetwork.EnumPrinterConnections


For Each printer In Printers

    If UCase$(GetPrinter) = UCase$(printer) Then

        GetPrinter = printer

        Exit For

    End If




End Function