重新创建现有打印机所需的 Powershell 脚本
Posted
技术标签:
【中文标题】重新创建现有打印机所需的 Powershell 脚本【英文标题】:Powershell Script Required to Recreate Existing Printers 【发布时间】:2016-09-07 08:03:25 【问题描述】:我遇到打印机 RDS 2012 问题并使用组策略创建网络打印机 因为 RDS 2012 上的打印可靠性很差,并且一直是终端服务盒 net spooler 停止和启动
组策略首选项有点不可靠
我希望能够使用 Powershell 重新创建打印机
Get-Printer | remove-printer get rid of them o.k
但是如何重新创建打印机。
【问题讨论】:
【参考方案1】:在 PowerShell 3 或更低版本上,您可以使用 WMI,
你需要创建一个打印机IP端口(win32_tcpipPrinterPort Class),添加驱动程序(Win32_PrinterDriver Class),然后创建一个打印机(Win32_Printer Class),
您可以为每个任务使用这个辅助函数:
Function CreatePrinterPort
Param ($PrinterIP, $PrinterPort, $PrinterPortName, $ComputerName)
$wmi = [wmiclass]"\\$ComputerName\root\cimv2:win32_tcpipPrinterPort"
$wmi.psbase.scope.options.enablePrivileges = $true
$Port = $wmi.createInstance()
$Port.name = $PrinterPortName
$Port.hostAddress = $PrinterIP
$Port.portNumber = $PrinterPort
$Port.SNMPEnabled = $false
$Port.Protocol = 1
$Port.put()
Function InstallPrinterDriver
Param ($DriverName, $DriverPath, $DriverInf, $ComputerName)
$wmi = [wmiclass]"\\$ComputerName\Root\cimv2:Win32_PrinterDriver"
$wmi.psbase.scope.options.enablePrivileges = $true
$wmi.psbase.Scope.Options.Impersonation = [System.Management.ImpersonationLevel]::Impersonate
$Driver = $wmi.CreateInstance()
$Driver.Name = $DriverName
$Driver.DriverPath = $DriverPath
$Driver.InfName = $DriverInf
$wmi.AddPrinterDriver($Driver)
$wmi.Put()
Function CreatePrinter
param ($PrinterCaption, $PrinterPortName, $DriverName, $ComputerName)
$wmi = ([WMIClass]"\\$ComputerName\Root\cimv2:Win32_Printer")
$Printer = $wmi.CreateInstance()
$Printer.Caption = $PrinterCaption
$Printer.DriverName = $DriverName
$Printer.PortName = $PrinterPortName
$Printer.DeviceID = $PrinterCaption
$Printer.Put()
使用示例:
创建端口:
CreatePrinterPort -PrinterIP 192.168.100.100 -PrinterPort 9100 -PrinterPortName 192.168.100.100 -ComputerName $Computer
安装驱动:
InstallPrinterDriver -ComputerName $Computer -DriverName "Xerox Phaser 3600 PCL 6" -DriverPath "C:\PrinterDrivers\Xerox\x64" -DriverInf "C:\PrinterDrivers\Xerox\x64\sxk2m.inf"
添加打印机:
CreatePrinter -PrinterCaption "Xerox Phaser 3600 PCL 6" -PrinterPortName "192.168.100.100" -DriverName "Xerox Phaser 3600 PCL 6" -ComputerName $Computer
不用说,您需要目标计算机上的管理员权限...
祝你好运
【讨论】:
【参考方案2】:在删除打印机之前,请在变量中保存有关它们的信息。 在删除步骤之后,您可以使用 cmdlet Add-printer 添加它们。
【讨论】:
$lp = Get-Printer add-printer=$lp 请详细说明 尝试:$Printer = Get-Printer
,然后:$Printer | % Add-Printer -ConnectionName $_.ComputerName
以上是关于重新创建现有打印机所需的 Powershell 脚本的主要内容,如果未能解决你的问题,请参考以下文章
我们可以检查 Powershell 脚本所需的 Powershell/WPF/.Net 版本吗?
如何将所需的参数传递给 Powershell ISE 中的脚本?
为啥我的 ArrayList 没有打印出 Java 所需的输出?