Hitta installerade skrivare med skriptuppgiften

Gäller för:SQL Server SSIS Integration Runtime i Azure Data Factory

Data som transformeras av Integration Services-paket har ofta en utskriven rapport som slutdestination. System.Drawing.Printing-namnrymden i Microsoft .NET Framework tillhandahåller klasser för arbete med skrivare.

Note

Om du vill skapa en uppgift som du lättare kan återanvända över flera paket, överväg att använda koden i detta Script-uppgiftsexempel som utgångspunkt för en anpassad uppgift. Mer information finns i Utveckla en anpassad uppgift.

Description

Följande exempel hittar skrivare installerade på servern som stödjer lagligt format papper (som används i United States). Koden för att kontrollera stödda pappersstorlekar är inkapslad i en privat funktion. För att du ska kunna följa skriptets framsteg när det kontrollerar inställningarna för varje skrivare, använder skriptet metoden Log för att skicka ett informationsmeddelande för skrivare med lagligt papper och för att ge en varning för skrivare utan lagligt storlekspapper. Dessa meddelanden visas i utdatafönstret i Microsoft Visual Studio Tools for Applications (VSTA)-IDE:n när du kör paketet i designern.

För att konfigurera detta exempel på Script Task

  1. Skapa variabeln med typen PrinterListObject.

  2. Script-sidan i Script Task Editor, lägg till denna variabel i egenskapen ReadWriteVariables.

  3. I skriptprojektet, lägg till en referens till System.Drawing-namnrymden .

  4. Använd Imports satser i din kod för att importera System.Collections och System.Drawing.Printing-namnrymderna .

Kod

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;  
  
        }