Komut Dosyası Göreviyle Yüklü Yazıcıları Bulma

Şunlar için geçerlidir:SQL Server Azure Data Factory'de SSIS Tümleştirme Çalışma Zamanı

Entegrasyon Hizmetleri paketleri tarafından dönüştürülen verilerin genellikle nihai hedefi basılı bir rapor olur. Microsoft .NET Framework'teki System.Drawing.Printing isim alanı, yazıcılarla çalışmak için sınıflar sağlar.

Note

Birden fazla paket arasında daha kolay yeniden kullanabileceğiniz bir görev oluşturmak istiyorsanız, bu Script görev örneğindeki kodu özel bir görev için başlangıç noktası olarak kullanmayı düşünün. Daha fazla bilgi için bkz. Özel Görev geliştirme.

Description

Aşağıdaki örnek, sunucuda kurulan ve yasal boyutta kağıdı destekleyen yazıcıları (Birleşik Devletler'te kullanıldığı gibi) bulur. Desteklenen kağıt boyutlarını kontrol etmek için kullanılan kod, özel bir fonksiyonda kapsüllenmiştir. Her yazıcı için ayarları kontrol ederken bekinin ilerlemesini takip edebilmek için, script yasal boyutta kağıt kullanan yazıcılar için bilgilendirici mesaj yükseltmek ve yasal boyutta kağıdı olmayan yazıcılar için uyarı vermek için bu yöntemi kullanır Log . Bu mesajlar, paketi tasarımcıda çalıştırdığınızda Microsoft Visual Studio Apps for Applications (VSTA) IDE'nin Çıkış penceresinde görünür.

Bu Script Görevi örneğini yapılandırmak için

  1. Object tipiyle adlandırılan PrinterList değişken oluşturun.

  2. Script Görev Editörü'nünScript sayfasında, bu değişkeni ReadWriteVariables özelliğine ekleyin.

  3. Script projesinde, System.Drawing isim alanına bir referans ekleyin.

  4. Kodunuzda, System.Collections ve System.Drawing.Printing isim alanlarını içe aktarmak için Imports ifadelerini kullanın.

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