不幸的是,操作系统中没有提供所需信息的WMI类。在.NET中
PrinterSettings
类此信息是通过对
DeviceCapabilities()
作用于
winspool.drv
. 他们没有在任何一个项目中提供这些能力
ROOT\cimv2
-
CIM_打印机(这是Win32_打印机的来源)
-
-
Win32\u PerfRawData\u后台处理程序\u打印队列
-
Win32\U打印机
-
Win32_打印机配置
-
-
Win32_打印作业
-
MSFT_打印机(与其他几个类一起位于根/StandardCimv2命名空间中)
还有一些其他打印机类,但这些是包含用于查询的任何数据的打印机类。如果您是在.NET中开发解决方案,我建议只在System.Drawing命名空间中使用PrinterSettings类(
there is an answer here with a great example
)。如果您使用的是脚本语言,则可以通过在PowerShell中使用.NET程序集来完成类似的工作,如下所示:
Add-Type -AssemblyName System.Drawing
$PrinterSettings = New-Object System.Drawing.Printing.PrinterSettings
ForEach ($Printer in Get-Printer) {
$PrinterSettings.PrinterName = $Printer.Name
Write-Host $Printer.Name
Write-Host $PrinterSettings.PaperSources
}