【问题标题】:Powershell Script Required to Recreate Existing Printers重新创建现有打印机所需的 Powershell 脚本
【发布时间】:2016-09-07 08:03:25
【问题描述】:

我遇到打印机 RDS 2012 问题并使用组策略创建网络打印机 因为 RDS 2012 上的打印可靠性很差,并且一直是终端服务盒 net spooler 停止和启动

组策略首选项有点不可靠

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

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

但是如何重新创建打印机。

【问题讨论】:

    标签: powershell printers


    【解决方案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}
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-21
      相关资源
      最近更新 更多