因此,我的任务是获取我们所有可以进行彩色打印的打印机的报告。我从这里找到了一个脚本(http://voices.yahoo.com/listing-printers-ips-using-windows-powershell-6617942.html?cat=15),它对所有事情都很有效,但如果不行它的颜色。
Get-WMIObject -class Win32_Printer -computer $printserver | Select Name,DriverName,PortName,CapabilityDescriptions
我认为“CapabilityDescriptions”会起作用,但这基于驱动程序,并且我们正在使用 HP 通用打印 PS。
所以我仔细检查了,事实上,当在打印服务器上并转到“功能”下“常规”选项卡上的打印机属性时,它列出了“颜色”。
事实上,彩色打印机会说“是”,而非彩色打印机会说“否”
现在我缺少另一种类型的 powershell 脚本变量来查找每台打印机的颜色“是/否”吗?
谢谢!
不确定您正在运行哪个版本的 PowerShell 以及您是否有权访问 Windows 8 计算机,但如果您这样做,PrinterManagement 模块将为您提供帮助,因为它似乎可以正确识别彩色打印机(我们也使用通用驱动程序):
PS> get-printconfiguration -ComputerName $printserver -PrinterName $nonprinter
PrinterName ComputerName Collate Color DuplexingMode
----------- ------------ ------- ----- -------------
printername servername False False OneSided
PS> get-printconfiguration -ComputerName $printserver -PrinterName $colorprinter
PrinterName ComputerName Collate Color DuplexingMode
----------- ------------ ------- ----- -------------
printername servername False True OneSided
gwmi win32_printer -cn $printserver | select name,capabilitydescriptions
我用的就是这个。
你可以这样做:
... $path = 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers' + '打印机名称' + '\DsDriver' $type_param = (Get-ItemProperty -path $path).printColor $d = $type_param -as[字符串]
If ($d -eq '1') # Printer color
{ ...
}elseif ($d -eq '0') { # Printer monochrome
....
}
...
参数
printColor
在这里
计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Print\Printers*[此处打印机名称]*\DsDriver
在我的环境中,所有打印机都会以某种方式报告 Color: true,即使它们不是。当它们不是彩色打印机时,我在服务器上的打印机属性下没有找到任何条目显示“颜色:是/真”。 (一般/特征/颜色:还没有
Get-PrintConfiguration -PrinterName XYZ_BW_PRINTER_1
PrinterName ComputerName Collate Color DuplexingMode
----------- ------------ ------- ----- -------------
XYZ_BW_Printer_... False True OneSided
(与每个现有命令的结果相同)
为什么会这样?