通过Powershell创buildnetworking打印机

我正在尝试使用Powershell脚本创buildnetworking打印机。 下面的脚本创build端口没有任何问题,但不会创build队列。 你能否确认这个脚本是否能在Windows Server 2008上运行? (注意,您需要安装驱动程序才能正常工作)。

function CreatePrinterPort { Param ( [string]$IPAddress ) $port = [wmiclass]"Win32_TcpIpPrinterPort" $newPort = $port.CreateInstance() $newport.Name= "IP_$IPAddress" $newport.SNMPEnabled=$false $newport.Protocol=1 $newport.HostAddress= $IPAddress Write-Host "Creating Port $ipaddress" -foregroundcolor "green" $newport.Put() } function CreatePrinter { Param ( [string]$PrinterName, [string]$DriverName, [string]$IPAddress, [string]$Location, [string]$Comment ) $print = [WMICLASS]"Win32_Printer" $newprinter = $print.createInstance() $newprinter.Drivername = $DriverName $newprinter.PortName = "IP_$IPAddress" $newprinter.Shared = $true $newprinter.Sharename = $PrinterName $newprinter.Location = $Location $newprinter.Comment = $Comment $newprinter.DeviceID = $PrinterName Write-Host "Creating Printer $printername" -foregroundcolor "green" $newprinter.Put() } CreatePrinterPort -IPAddress "Localhost" CreatePrinter -PrinterName Print1 -DriverName "HP LaserJet 4" -PortName "Localhost"` -Location "Office" -Comment "Test comment" 

我得到的错误是在CreatePrinter函数上:

使用“0”参数调用“Put”的exception:“Generic failure”

你的PortName不应该是“IP_ $ IPAddress”而不是“Localhost”?

 CreatePrinter -PrinterName Print1 -DriverName "HP LaserJet 4" -PortName "IP_123.123.123.123" -Location "Office" -Comment "Test comment" 

此外,您的DriverName需要是该驱动程序的确切名称。 你不能select它; 它由制造商指定。

你的脚本的问题是你在你的函数中声明了$ IPAddress,但是当你调用函数的时候指定-portname。 在调用函数时,可以将函数更改为使用$ PortName或使用-IPAddress。

我个人更改你的函数使用[string] $ PortName

这是你的function正常工作

  function CreatePrinter { Param ( [string]$PrinterName, [string]$DriverName, [string]$PortName, [string]$Location, [string]$Comment ) $print = [WMICLASS]"Win32_Printer" $newprinter = $print.createInstance() $newprinter.Drivername = $DriverName $newprinter.PortName = "IP_$PortName" $newprinter.Shared = $true $newprinter.Sharename = $PrinterName $newprinter.Location = $Location $newprinter.Comment = $Comment $newprinter.DeviceID = $PrinterName Write-Host "Creating Printer $printername" -foregroundcolor "green" $newprinter.Put() } $printerport1 = "10.10.10.0" CreatePrinterPort -IPAddress $printerport1 CreatePrinter -PrinterName "Print1" -DriverName "HP LaserJet 4300 PCL 6" -PortName $printerport1 -Location "Office" -Comment "Test comment"