Ricerca di stampanti installate con l'attività ScriptFinding Installed Printers with the Script Task

La destinazione finale dei dati trasformati dai pacchetti Integration ServicesIntegration Services è spesso costituita da un report stampato.The data that is transformed by Integration ServicesIntegration Services packages often has a printed report as its final destination. Il System.Drawing.Printing spazio dei nomi di MicrosoftMicrosoft .NET Framework.NET Framework fornisce classi per l'utilizzo delle stampanti.The System.Drawing.Printing namespace in the MicrosoftMicrosoft .NET Framework.NET Framework provides classes for working with printers.

Nota

Se si desidera creare un'attività da riutilizzare più facilmente con più pacchetti, è possibile utilizzare il codice di questo esempio di attività Script come punto iniziale per un'attività personalizzata.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. Per altre informazioni, vedere Sviluppo di un'attività personalizzata.For more information, see Developing a Custom Task.

DescriptionDescription

Nell'esempio seguente vengono individuate le stampanti installate nel server che supportano carta in formato Legal (utilizzato negli Stati Uniti).The following example locates printers installed on the server that support legal size paper (as used in the United States). Il codice per controllare i formati della carta supportati è incapsulato in una funzione privata.The code to check supported paper sizes is encapsulated in a private function. Per consentire di tenere traccia del proprio stato mentre controlla le impostazioni per ogni stampante, lo script utilizza il metodo Log per generare un messaggio informativo per le stampanti con formato della carta Legal e un avviso per le stampanti senza questo formato.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. Questi messaggi vengono visualizzati nel Output finestra il MicrosoftMicrosoft Visual StudioVisual Studio Tools for Applications (VSTA) IDE quando si esegue il pacchetto nella finestra di progettazione.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.

Per configurare l'esempio di attività ScriptTo configure this Script Task example

  1. Creare la variabile denominata PrinterList con tipo oggetto.Create the variable named PrinterList with type Object.

  2. Nel Script pagina il Editor attività Script, aggiungere questa variabile per la proprietà ReadWriteVariables.On the Script page of the Script Task Editor, add this variable to the ReadWriteVariables property.

  3. Nel progetto di script, aggiungere un riferimento di Drawing dello spazio dei nomi.In the script project, add a reference to the System.Drawing namespace.

  4. Nel codice, utilizzare importazioni istruzioni per importare il System. Collections e System.Drawing.Printing gli spazi dei nomi.In your code, use Imports statements to import the System.Collections and the System.Drawing.Printing namespaces.

CodiceCode

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;  

        }  

Vedere ancheSee Also

Esempi di attività scriptScript Task Examples