目的 :将网络打印机从一台 Windows 10 机器导出到输出文件,然后使用该输出文件将其导入到同一网络上的另一台 Windows 10 机器。
研究工作:
以下 Powershell cmd 显示映射打印机对于用户:
命令 1)
Get-WMIObject Win32_Printer -ComputerName $env:COMPUTERNAME | where{$_.Name -like “*\\*”} | select sharename,name
笔记: 上面的 cmd 没有显示驱动程序名称这是下一个命令的关键参数
我计划使用以下命令导入网络打印机:
命令 2)
句法:
rundll32 printui.dll,PrintUIEntry /Xs /n\SERVER\PRINTERSHARENAME驱动程序名称“Lexmark C752 PS3”
由于我没有驱动程序名称,所以我尝试运行它,因为驱动程序已经安装在第二个 Windows 10 盒子上。
rundll32 printui.dll,PrintUIEntry /Xs /n"\tdr09\AlphaIT(prtq3) 柯尼卡美能达 C550i"
但是运行cmd后出现错误:
===========================================================================
[窗口标题] 打印机
[主要说明] 该参数无效。
[好的]
===========================================================================
问题:
1)cmdlet 1 不提供驱动程序名称因此 cmdlet 2 因上述错误而失败。
=======================================================================
方法 2 根据@Massimo 的反馈
我尝试使用以下命令:
获取打印机 | 其中{$_.Name -like "\"} | 格式化表格-自动调整大小 在此处输入图片描述
输出如下所示:
名称 计算机名称 类型 驱动程序名称 端口名称 共享 发布
\trq02\AXEIT(ptq2) KONICA MINOLTA C550i ptq02 连接 KONICA MINOLTA C650iSeries 10.246.0.173 True F...
我可以将其通过管道传输到文本文件,但如何让 PowerShell 读取此文件并添加打印机。
笔记:如果我手动运行以下 cmd,则打印机添加工作正常。
添加打印机“\trq02\AXEIT(ptq2) KONICA MINOLTA C550i”
答案1
您为什么还要费心考虑 WMI 和 rundll32?
您应该使用本机的 PowerShell 命令Get-Printer
和Add-Printer
。
例子:
在第一台计算机上,使用:
Get-Printer | where {$_.Type -eq 'Connection'} | Export-Csv -Path 'C:\Printers.csv'
将文件复制到第二台计算机并使用:
$printers = Import-Csv -Path 'C:\Printers.csv'
foreach($printer in $printers)
{
Add-Printer -ConnectionName ($printer.Name)
}