스크립트 태스크를 사용하여 설치된 프린터 찾기Finding Installed Printers with the Script Task

Integration ServicesIntegration Services 패키지에서 변환된 데이터의 최종 대상은 인쇄된 보고서인 경우가 종종 있습니다.The data that is transformed by Integration ServicesIntegration Services packages often has a printed report as its final destination. System.Drawing.Printing 네임 스페이스에는 MicrosoftMicrosoft .NET Framework.NET Framework 프린터 작업을 위한 클래스를 제공 합니다.The System.Drawing.Printing namespace in the MicrosoftMicrosoft .NET Framework.NET Framework provides classes for working with printers.

참고

여러 패키지에서 쉽게 다시 사용할 수 있는 태스크를 만들려면 이 스크립트 태스크 예제에 있는 코드를 바탕으로 사용자 지정 태스크를 만들어 보십시오.If you want to create a task that you can more easily reuse across multiple packages, consider using the code in this Script task sample as the starting point for a custom task. 자세한 내용은 사용자 지정 태스크 개발을 참조하세요.For more information, see Developing a Custom Task.

DescriptionDescription

다음 예에서는 서버에 설치된 프린터 중 미국에서 사용하는 Legal 크기 용지를 지원하는 프린터를 찾습니다.The following example locates printers installed on the server that support legal size paper (as used in the United States). 지원되는 용지 크기를 확인하는 코드는 전용 함수에 캡슐화되어 있습니다.The code to check supported paper sizes is encapsulated in a private function. 각 프린터에 대한 설정을 확인할 때 스크립트의 진행률을 추적할 수 있도록 스크립트에서는 Log 메서드를 사용하여 Legal 크기 용지를 사용하는 프린터에 대한 정보 메시지를 발생시키거나 Legal 크기 용지를 사용하지 않는 프린터에 대해 경고를 발생시킵니다.To enable you to track the progress of the script as it checks the settings for each printer, the script uses the Log method to raise an informational message for printers with legal size paper, and to raise a warning for printers without legal size paper. 이러한 메시지에 표시는 출력 의 창은 MicrosoftMicrosoft Visual StudioVisual Studio VSTA Tools for Applications () IDE 디자이너에서 패키지를 실행 합니다.These messages appear in the Output window of the MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA) IDE when you run the package in the designer.

이 스크립트 태스크 예를 구성하려면To configure this Script Task example

  1. 변수를 만들고 PrinterList 형식과 개체합니다.Create the variable named PrinterList with type Object.

  2. 스크립트 의 페이지는 스크립트 태스크 편집기, ReadWriteVariables 속성에이 변수를 추가 합니다.On the Script page of the Script Task Editor, add this variable to the ReadWriteVariables property.

  3. 스크립트 프로젝트에 대 한 참조 추가 System.Drawing 네임 스페이스입니다.In the script project, add a reference to the System.Drawing namespace.

  4. 사용자 코드에서 사용 하 여 Imports 가져오려는 문을 System.CollectionsSystem.Drawing.Printing 네임 스페이스입니다.In your code, use Imports statements to import the System.Collections and the System.Drawing.Printing namespaces.

코드Code

Public Sub Main()  

    Dim printerName As String  
    Dim currentPrinter As New PrinterSettings  
    Dim size As PaperSize  

    Dim printerList As New ArrayList  
    For Each printerName In PrinterSettings.InstalledPrinters  
        currentPrinter.PrinterName = printerName  
        If PrinterHasLegalPaper(currentPrinter) Then  
            printerList.Add(printerName)  
            Dts.Events.FireInformation(0, "Example", _  
                "Printer " & printerName & " has legal paper.", _  
                String.Empty, 0, False)  
        Else  
            Dts.Events.FireWarning(0, "Example", _  
                "Printer " & printerName & " DOES NOT have legal paper.", _  
                String.Empty, 0)  
        End If  
    Next  

    Dts.Variables("PrinterList").Value = printerList  

    Dts.TaskResult = ScriptResults.Success  

End Sub  

Private Function PrinterHasLegalPaper( _  
    ByVal thisPrinter As PrinterSettings) As Boolean  

    Dim size As PaperSize  
    Dim hasLegal As Boolean = False  

    For Each size In thisPrinter.PaperSizes  
        If size.Kind = PaperKind.Legal Then  
            hasLegal = True  
        End If  
    Next  

    Return hasLegal  

End Function  
public void Main()  
        {  

            PrinterSettings currentPrinter = new PrinterSettings();  
            PaperSize size;  
            Boolean Flag = false;  

            ArrayList printerList = new ArrayList();  
            foreach (string printerName in PrinterSettings.InstalledPrinters)  
            {  
                currentPrinter.PrinterName = printerName;  
                if (PrinterHasLegalPaper(currentPrinter))  
                {  
                    printerList.Add(printerName);  
                    Dts.Events.FireInformation(0, "Example", "Printer " + printerName + " has legal paper.", String.Empty, 0, ref Flag);  
                }  
                else  
                {  
                    Dts.Events.FireWarning(0, "Example", "Printer " + printerName + " DOES NOT have legal paper.", String.Empty, 0);  
                }  
            }  

            Dts.Variables["PrinterList"].Value = printerList;  

            Dts.TaskResult = (int)ScriptResults.Success;  

        }  

        private bool PrinterHasLegalPaper(PrinterSettings thisPrinter)  
        {  

            bool hasLegal = false;  

            foreach (PaperSize size in thisPrinter.PaperSizes)  
            {  
                if (size.Kind == PaperKind.Legal)  
                {  
                    hasLegal = true;  
                }  
            }  

            return hasLegal;  

        }  

참고 항목See Also

스크립트 태스크 예Script Task Examples