【问题标题】:How to list all printers on network computer如何列出网络计算机上的所有打印机
【发布时间】:2012-06-08 22:23:53
【问题描述】:

如下图所示,当我尝试检索所有打印机时,我只得到了2台打印机。

有没有办法使用 PowerShell WMI 或 C# 返回所有打印机(以便我可以在 powershell 中翻译它)?

我试过System.Drawing.Printing.PrinterSettings.InstalledPrinters(参考how to get the list of all printers in computer - C# Winform)但也只显示2个条目。

【问题讨论】:

  • 您的问题中有一些不清楚的地方(怀疑来自命令提示符屏幕截图)。您是否尝试在不是您自己的网络计算机上查找已安装的打印机?
  • 是的,史蒂夫,你是对的。我正在尝试在网络计算机上而不是我自己的计算机上安装打印机
  • 刚刚在我的网络上尝试了你的 PS 脚本,我可以在网络服务器上获取所有打印机。可能只是权限问题?在这里,我是管理员,拥有该服务器上打印机的完全权限-
  • @Steve:我想弄清楚这是否是权限问题。我会尽快回复你

标签: c# powershell printing wmi


【解决方案1】:

简单地说,

通过System.Drawing.Printing

foreach (String printer in PrinterSettings.InstalledPrinters)
{
    Console.WriteLine(printer.ToString()+Environment.NewLine);
} 

通过WMI

public static void AvailablePrinters()
{
 oManagementScope = new ManagementScope(ManagementPath.DefaultPath);
 oManagementScope.Connect();

 SelectQuery oSelectQuery = new SelectQuery();
 oSelectQuery.QueryString = @"SELECT Name FROM Win32_Printer";

 ManagementObjectSearcher oObjectSearcher = 
    new ManagementObjectSearcher(oManagementScope, @oSelectQuery);
 ManagementObjectCollection oObjectCollection = oObjectSearcher.Get();

 foreach (ManagementObject oItem in oObjectCollection)
 {

 Console.WriteLine("Name : " + oItem["Name"].ToString()+ Environment.NewLine);
 }
}

通过PowerShell

Get-WMIObject -class Win32_Printer -computer $printserver | Select Name,DriverName,PortName

欲了解更多信息,请查看此article 和 WMI 打印机Class

【讨论】:

  • 对不起,我应该更具体的问题是,我正在尝试检索安装在远程计算机上的打印机。假设我的计算机名称是 comp1,那么我想列出名为 comp2 的机器上的打印机,而不是安装在 comp1 上的打印机列表
  • 你现在得到解决方案了吗我有同样的问题“假设我的计算机名称是 comp1,那么我想列出名为 comp2 的计算机上的打印机,而不是安装在 comp1 上的打印机列表"
猜你喜欢
  • 1970-01-01
  • 2011-09-03
  • 2015-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-22
  • 2013-04-14
相关资源
最近更新 更多