我在一个大型环境中为技术支持团队编写实用程序。我需要提供域中所有打印服务器的列表并让他们选择一个。一旦他们选择了打印服务器,我将列出该打印服务器上的所有打印队列并让他们选择一个。我找到了很多关于如何从打印服务器中提取打印队列列表的示例,但没有关于如何获取打印服务器列表的示例。
如何获取域 (C#) 中所有打印服务器的列表?
我在一个大型环境中为技术支持团队编写实用程序。我需要提供域中所有打印服务器的列表并让他们选择一个。一旦他们选择了打印服务器,我将列出该打印服务器上的所有打印队列并让他们选择一个。我找到了很多关于如何从打印服务器中提取打印队列列表的示例,但没有关于如何获取打印服务器列表的示例。
如何获取域 (C#) 中所有打印服务器的列表?
您可以使用 System.Management 命名空间。
请参考这个线程:
Is there a .NET way to enumerate all available network printers?
我不确定这是否有帮助,但您可以查找网络中的所有计算机并检查它们的名称。
像这样:
// 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);
}
}
}
在 PowerShell 中,您可以执行以下操作:
Import-Module ActiveDirectory Get-ADObject -LDAPFilter "(&(&(&(uncName=*)(objectCategory=printQueue))))" -properties *|Sort-Object -Unique -Property servername |select servername