2011-03-31 66 views
3

在获取我正在努力成功创建打印机的脚本时遇到很大困难。到目前为止,我已经成功地创建了成功创建的打印机端口,但在打印机创建时它总是出错。创建打印机Powershell

CSV文件在那里了,从外观采摘的信息是这样的:

PrinterName,PrinterPort,IPAddress,Location,Comment,PrintDriver, 
Testprint1,Testport1,10.10.10.10,IT_Test,Test_1,HP LaserJet 4200 PCL 5e, 

该错误消息我得到的是这样的:

Exception calling "Put" with "0" argument(s): "Generic failure " 
At C:\myversion.ps1:53 char:19 
+ $objNewPrinter.Put <<<<() 
    + CategoryInfo   : NotSpecified: (:) [], MethodInvocationException 
    + FullyQualifiedErrorId : DotNetMethodException 

我使用的代码是这样的:

trap { $error[0].Exception | get-member } $objNewPrinter.Put() 

Write-Host ("`tCreating " + $strPrinterName.Count + " Printer's`t") 
$objPrint = [WMICLASS]"\\timvista\ROOT\cimv2:Win32_Printer" 
$objPrint.psbase.scope.options.EnablePrivileges = $true 

## Loop through and create each printer 
For($i=0; $i -lt $PrinterName.count; $i++) 
{ 
$objNewPrinter = $objPrint.createInstance() 
$objNewPrinter.DeviceID = $PrinterName[$i] ## This is the printer name 
$objNewPrinter.DriverName = $PrintDriver[$i] 
$objNewPrinter.PortName = $PrinterPort[$i] 
$objNewPrinter.Location = $Location[$i] 
$objNewPrinter.Comment = $Comment[$i] 
$objNewPrinter.ShareName = $PrinterName[$i] 
$objNewPrinter.Put() 
$objPrint 
## Add Security group 
## Not completed yet 
} 

有没有人对通用故障是什么以及如何处理故障是吗?

回答

0

Tim,Generic failure错误是在将错误参数传递给WMI方法时引发的,因此有两个建议,首先尝试使用实际端口名称而不是Testport1并检查DriverName必须是现有驱动程序的确切名称。

+0

有没有办法通过powershell列出现有打印驱动程序的确切名称?到目前为止,我一直使用打印机控制面板小程序的“服务器属性”部分中的“驱动程序”选项卡。我也将对我们将使用的真实打印机名称进行测试。 – 2011-03-31 15:19:14

+0

'$ Class =“win32_printer” Get-WmiObject -class $ Class | ft名称,drivername -auto' – RRUZ 2011-03-31 15:27:54