【问题标题】:Get list of all print servers in the domain in C#在 C# 中获取域中所有打印服务器的列表
【发布时间】:2012-06-25 16:23:59
【问题描述】:

我在一个大型环境中工作,为技术支持团队编写实用程序。我需要提供域中所有打印服务器的列表并让他们选择一个。一旦他们选择了打印服务器,我将列出该打印服务器上的所有打印队列并让他们选择一个。我找到了很多关于如何从打印服务器中提取打印队列列表的示例,但没有关于如何获取打印服务器列表的示例。

如何获取域中所有打印服务器的列表 (C#)?

【问题讨论】:

  • 您是否找到了解决方案,或者我们的一个解决方案。请分享或投票。谢谢

标签: c# .net network-printers


【解决方案1】:

您可以使用 System.Management 命名空间。

请参考本帖:
Is there a .NET way to enumerate all available network printers?

【讨论】:

  • 感谢您的回复,但我不知道在哪里可以帮助我获取打印服务器列表。我可以获得所有打印机,但在我们的环境中,这将是数千台。我需要提供打印服务器列表,然后在他们选择打印服务器后,列出该服务器上的队列。
  • 查看 System.Print.PrinterServer 命名空间:msdn.microsoft.com/en-us/library/…。这有一个 GetPrintQueue 方法。
  • 正是我将用于后半部分任务的内容。我已经盖好了那块。我需要的是一种获取所有可用打印服务器列表的方法。
【解决方案2】:

我不确定这是否有帮助,但您可以查找网络中的所有计算机并检查它们的名称。

像这样:

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

【讨论】:

    【解决方案3】:

    在 PowerShell 中,您可以执行以下操作:

    导入模块 ActiveDirectory Get-ADObject -LDAPFilter "(&(&(&(uncName=*)(objectCategory=printQueue))))" -properties *|Sort-Object -Unique -Property servername |select servername

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-01-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-05
      • 1970-01-01
      相关资源
      最近更新 更多