重新创建现有打印机所需的Powershell脚本

时间:2016-09-07 08:03:26

标签: powershell printers

我有打印机RDS 2012问题并使用组策略创建网络打印机 因为RDS 2012上的打印可靠性令人沮丧,并且终端服务盒网络假脱机停止并启动

组策略首选项有点不可靠

我希望能够使用Powershell重新创建打印机

Get-Printer  | remove-printer   get rid of them o.k

但如何重新创建打印机。

2 个答案:

答案 0 :(得分:0)

在删除打印机之前,请确保在变量中保存有关它们的信息。 删除步骤后,您可以使用cmdlet添加打印机添加它们。

答案 1 :(得分:0)

在PowerShell 3或更低版本上,您可以使用WMI,

您需要创建一个打印机IP端口(win32_tcpipPrinterPort类),添加驱动程序(Win32_PrinterDriver类),然后创建一个打印机(Win32_Printer类),

您可以为每个任务使用此辅助函数:

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

毋庸置疑,您需要目标计算机上的管理员权限...

祝你好运