2012-06-04 3 views
3

Как показано ниже на картинке, когда я пытался извлечь все принтеры, у меня было всего 2 принтера.Как перечислить все принтеры на сетевом компьютере

Есть ли способ вернуть все принтеры, используя либо PowerShell WMI, либо C# (чтобы я мог перевести его в powershell)?

Я пробовал System.Drawing.Printing.PrinterSettings.InstalledPrinters (см. how to get the list of all printers in computer - C# Winform), но также отображает только 2 записи.

enter image description here

+0

Существует что-то, что не ясно, в вашем вопросе (сомнение возникает из командной строки screenshoot). Вы пытаетесь найти установленные принтеры на сетевом компьютере, который не является вашим? – Steve

+0

Да, вы правы, Стив. Я пытаюсь получить принтеры на сетевом компьютере, а не самостоятельно – Sung

+0

Просто попробовал свой PS-скрипт сейчас в моей сети, и я могу получить все принтеры на сетевом сервере. Может быть, это проблема разрешения? Здесь я администратор и имею полное разрешение на печать на этом сервере. – Steve

ответ

2

Просто

через 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

+0

К сожалению, я должен был уточнить, что я пытаюсь получить принтеры, установленные на удаленном компьютере. Скажем, если мое имя компьютера является comp1, тогда я бы хотел отобразить принтеры на компьютере с именем comp2, а не в списке принтеров, установленных на comp1 – Sung

+0

, вы получаете решение, теперь у меня такая же проблема. «Скажите, если имя моего компьютера - comp1 , то я хотел бы перечислить принтеры на компьютере с именем comp2, а не в списке принтеров, установленных на comp1 " –

Смежные вопросы