我正在寻找一种解决方案,用于导出在使用例如“CAB A3 300DPI”驱动程序的特定打印机上进行的设置,然后将其导入使用相同驱动程序的不同设备。为此,我想使用 PowerShell。我非常了解 PrintUI.dll,但当我尝试导入某些打印机上的设置时,这会导致我这边出现太多错误。
我已经找到了在菜单项“高级”下导入“打印默认值...”的解决方案,但尚未找到在菜单项“常规”下导入“首选项...”的设置的解决方案。
对于“高级”->“打印默认值...”的导出和导入,我使用了此处的以下命令将打印机默认设置复制到其他打印机:
出口:
$somePrinterConfig = Get-PrintConfiguration -PrinterName "xxxxxx"
进口:
Set-PrintConfiguration -PrinterName "yyyyyy" -PrinterTicketXml $somePrinterConfig.PrintTicketXML
无论如何,就像我说的,这只是一个部分解决方案,因为我仍然需要导出和导入打印机的“常规”->“首选项......”设置。
前面提到过,我使用的 PrintUI.dll 在导入某些打印机的设置时会导致错误。为此,我在这里使用了以下内容:
出口:
RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Ss /n "name_of_printer" /a "path_of_file_to_export.dat"
进口:
RUNDLL32.EXE PRINTUI.DLL,PrintUIEntry /Sr /n "name_of_printer" /a "path_of_file_to_import.dat" 2 7 c d g u
我还应该提到,我导出了 Windows Server 2008 Service Pack 2 上的设置,并将其导入 Windows Server 2012 r2 上。
非常感谢每一份投入!
答案1
我在 Archive.org 上找到了这些脚本 https://web.archive.org/web/20200318071550/https://gallery.technet.microsoft.com/scriptcenter/Powershell-printer-config-db0465bd
以下是该页面的内容:
这是我在 Technet 上第一次上传 PowerShell(如有需要,请提供反馈)
我声称这是世界首创,因为我在网上任何地方都找不到这方面的信息。(是的,有命令,但没有如何正确获取配置或应用它的正确示例)。
以前,要设置打印机的配置属性,您需要使用一个相当冗长的过程,该过程使用 > PrintUI.exe(或 printuidll)过程,如下所示:
PRINTUI.EXE /Sr /n "打印机名称" /a "full_path_to_configuration_file" dug 8 r
因此,使用 powershell 打印机命令会简单得多。只需设置已安装打印机的参数,按照您的喜好设置即可(纸张大小、颜色、方向、私人打印或您需要更改的任何其他设置)。
然后运行以下代码(将 $PNA 更改为打印机的实际名称)
$PNA = "Printer name a" $GPC = get-printconfiguration -PrinterName $PNA $GPC.PrintTicketXML | out-file C:\Temp\$PNA.xml
这会将正确的打印机配置保存到 xml 文件中:“C:\Temp\Printer name a.xml”以获取多台打印机的 XML 配置文件。我使用以下代码:
$PNA = "Printer Name A" $PNB = "Printer Name B" $PNC = "Printer Name C" $PND = "Printer Name D" $PN = $PNA,$PNB,$PNC,$PND Foreach ($P in $PN){ $GPC = get-printconfiguration -PrinterName $P $GPC.PrintTicketXML | out-file C:\Temp\$P.xml }
您可以看到如何将其扩展到多台打印机。我相信有人可以让这个更简单,或者您甚至可以使用此代码获取所有打印机的名称(如果您保留它们,请注意传真机、XPS 文档编写器等!)
$PN = (get-printer | select name).name Foreach ($P in $PN){ $GPC = get-printconfiguration -PrinterName $P $GPC.PrintTicketXML | out-file C:\Temp\$P.xml }
要应用打印机配置,您可以使用以下命令:
$PNA = "Printer Name A" $XMLA = Get-Content "Path\to\$PNA.xml" | Out-String Set-PrintConfiguration -PrinterName $PNA -PrintTicketXml $XMLA
答案2
这对你来说已经晚了...但我去年就弄清楚了这是如何运作的,并将其发布在 technet 上:
这通常是如何使用 powershell 的内置命令导出打印机配置并将其应用于另一台打印机(它是 printui dll 的 powershell 替代品)
https://gallery.technet.microsoft.com/scriptcenter/Powershell-printer-config-db0465bd
希望它能对某些人有所帮助:-)
米特英国