2012-06-25 47 views
5

Tôi đang làm việc trong môi trường lớn viết tiện ích cho nhóm hỗ trợ kỹ thuật. Tôi cần cung cấp danh sách tất cả các máy chủ in trong miền và cho phép họ chọn một máy chủ. Khi họ chọn máy chủ in, tôi sẽ liệt kê tất cả các hàng đợi in trên máy chủ in đó và yêu cầu họ chọn một máy chủ in. Tôi đã tìm thấy rất nhiều ví dụ về cách kéo danh sách các hàng đợi in từ máy chủ in, nhưng không có ví dụ nào về cách lấy danh sách các máy chủ in.Lấy danh sách tất cả các máy chủ in trong miền trong C#

Làm cách nào để có danh sách tất cả các máy chủ in trong miền (C#)?

+0

Bạn đã tìm thấy một giải pháp, hoặc đã làm một trong những của chúng tôi wirklich. Hãy chia sẻ hoặc bỏ phiếu. Cảm ơn –

Trả lời

1

Bạn có thể sử dụng System.Management Namespace.

Vui lòng tham khảo chủ đề này:
Is there a .NET way to enumerate all available network printers?

+0

Cảm ơn bạn đã phản hồi, nhưng tôi không thấy nơi có thể giúp tôi có danh sách các máy chủ in. Tôi có thể nhận được tất cả các máy in, nhưng trong môi trường của chúng tôi, đó sẽ là hàng ngàn. Tôi cần trình bày danh sách các máy chủ in và sau đó khi họ chọn máy chủ in, hãy liệt kê các hàng đợi trên máy chủ đó. – ScottK

+0

Hãy xem không gian tên System.Print.PrinterServer: http://msdn.microsoft.com/en-us/library/system.printing.printserver.aspx. Điều này có một phương pháp GetPrintQueue. – ems305

+3

Chính xác những gì tôi sẽ sử dụng cho nửa sau của tác vụ. Tôi có mảnh đó được bảo hiểm. Những gì tôi cần là một cách để có được một danh sách của tất cả các máy chủ in có sẵn. – ScottK

0

Tôi không chắc chắn nếu điều này sẽ giúp, nhưng bạn có thể tìm kiếm tất cả các máy tính trong mạng và kiểm tra tên của họ.

Giống như vậy:

// Reference System.DirectoryServices is needed 

DirectoryEntry root = new DirectoryEntry("WinNT:"); 
foreach (DirectoryEntry computers in root.Children) 
{ 
    foreach (DirectoryEntry computer in computers.Children) 
    { 
     if (computer.SchemaClassName == "Computer") { 
      if (computer.Name.IndexOf("printer-prefix-or-so")==-1) 
       Console.WriteLine(computer.Name); 
     }        
    } 
} 
0

Trong PowerShell bạn có thể làm như sau:

Import-Module ActiveDirectory Get-ADObject -LDAPFilter "(& (& (& (uncName = *) (objectCategory = printQueue)))) "-properties * | Sắp xếp-Đối tượng -Unique -Property servername | chọn servername

Các vấn đề liên quan