我怎么能够以编程方式从打印机Printing Defaults
设置中检索并显示属性值?
我可以使用 PowerShell 成功地从打印机检索属性值Preferences
,但是在尝试访问其中的设置时遇到了困难Printing Defaults
。
更多背景信息
您可以在哪里设置打印机preferences
,并且可以设置打印机printing defaults
:
- 打印首选项:
Printer Properties
|General
标签 |Preferences
- 打印默认值:
Printer Properties
|Advanced
标签 |Printing Defaults
对特定打印机执行此 PowerShell 查询仅从而Preferences
不是中检索设置Printing Defaults
,这是我需要的信息。
获取打印默认值
$p = "Printer XYZ";
$printerConfigs = Get-WmiObject -Class Win32_PrinterConfiguration | Where {$_.Name -like "*$p*"};
foreach ($config in $printerConfigs) {
$printerName = $config.Caption;
$collate = $config.Collate;
$color = $config.Color;
$duplex = $config.Duplex;
$paperSize = $config.PaperSize;
## -- Display output
Write-Host "Printer: $printerName" -ForegroundColor Yellow;
Write-Host "Collate: $collate" -ForegroundColor Yellow;
Write-Host "Color: $color" -ForegroundColor Yellow;
Write-Host "Duplex: $duplex" -ForegroundColor Yellow;
Write-Host "Paper Size: $paperSize" -ForegroundColor Yellow;
Write-Host "-----------------------";
};
打印机设置
使用驱动程序: RICOH PCL6 Universal V4.37
附上我在优先此打印机的选项,PowerShell 查询输出按预期显示了这一点。然而,在打印默认设置,它设置为彩色和双面,设置不同于优先。
如果我改变优先然后运行 PowerShell 查询,我可以看到输出值按预期发生变化——但我看不到打印默认设置以及重新运行此查询时这些值发生更改(或不同)的情况。我很想知道打印默认设定值。
这是我所看到的Preferences
这是我所看到的Printing Defaults
输出
Printer: Printer XYZ
Collate: False
Color: 1
Duplex: False
Paper Size: Letter 8 1/2 x 11 in
-----------------------
我也尝试过使用Get-WmiObject -Class Win32_Printer
和一系列其他的东西,但我还没有从Printing Defaults
打印机上取回设置。
综上所述,我期待收到指导、建议、示例代码或您在成功检索这些打印机属性方面拥有的任何经验。此外,如果您有非 PowerShell 解决方案可以帮助我实现此目标,我也愿意探索这些选项。我的主要重点是从打印机获取必要的属性值。
答案1
要检索打印机的打印默认设置使用 PowerShell 进行配置设置时,您可以使用 cmdlet Get-PrintConfiguration
。此方法与以下两种方法兼容:Windows 10和Windows 服务器 2019,已确认。
笔记: 所有确认可以工作的打印机均使用制造商“普遍的“分类驱动程序。
电源外壳
$p = "Printer XYZ";
$printerConfigs = Get-PrintConfiguration -PrinterName $p;
$printerConfigs | Select PrinterName, Collate, Color, DuplexingMode, PaperSize;
输出
PrinterName : Printer XYZ
Collate : False
Color : True
DuplexingMode : TwoSidedLongEdge
PaperSize : Letter
支持资源
-
这
Get-PrintConfiguration
cmdlet 获取指定打印机的配置信息。使用Get-PrintConfiguration
cmdlet,您可以管理以下功能的配置:- 逐份打印
- 颜色
- 双工模式
- N 向上
- 纸张尺寸
免费
-
什么是 DEVMODE?
DEVMODE 是一个 Windows 结构,用于保存打印机设置(有关打印机的初始化和环境信息)。它包含两个部分:公共部分和私有部分。
公共部分包含所有打印机共用的数据。
私密部分包含特定于特定打印机的数据。私有部分的长度可变,并包含所有特定制造商的相关设置。
公开部分:此部分编码打印机驱动程序模型中公开的常规设置,例如打印机名称、驱动程序版本、纸张大小、方向、颜色、双面打印等。公共部分保持不变,不受任何打印机驱动程序影响,不支持与标签打印机(热敏打印机、工业喷墨打印机、激光雕刻机)相关的细节。
私密部分:此部分对公共部分中不可用的设置进行编码。
<Some manufacturer>
打印机驱动程序使用此部分存储特定于打印机型号的数据,例如打印速度、温度设置、偏移量、打印模式、介质类型、传感器、切刀、图形编码、RFID 支持等。DEVMODE 私有部分中的数据结构是驱动程序开发人员定义的二进制数据流。
DEVMODE 改变
DEVMODE 数据结构存储在 Windows 注册表中。该结构有两个副本:默认打印机设置和用户特定的打印机设置。您可以通过更改打印机驱动程序中的参数来更改 DEVMODE(打印机设置)。前两个选项与 Windows 相关,而第三个选项可通过
<some manufacturer>
软件获得。默认打印机设置:这些设置定义在打印机属性 > 高级选项卡 > 打印默认设置。
用户特定设置:这些设置分别存储在每个用户的
HKEY_CURRENT_USER
注册表项中。默认情况下,用户特定设置继承自打印机的默认设置。用户特定设置在打印机属性 > 首选项。此处的所有修改都只影响当前用户。