Just for the heck of it I ran the template script from the script center and
I get the same error. Does anyone have an idea why I get that error? Am I
missing something in my script? And yes I am admin on the box.
Here is the script.
Set objExcel = CreateObject("Excel.Application")
Set objWorkbook = objExcel.Workbooks.Open("C:\Scripts\Printer\New_ports.xls")
objExcel.Visible = True
intRow = 2
Do Until objExcel.Cells(intRow,1).Value = ""
strComputer = "."
Set objWMIService = GetObject("winmgmts:")
Set objNewPort = objWMIService.Get _
("Win32_TCPIPPrinterPort").SpawnInstance_
objNewPort.Name = objExcel.Cells(intRow,5).Value
objNewPort.Protocol = 1
objNewPort.HostAddress = objExcel.Cells(intRow,1).Value
objNewPort.PortNumber = "9100"
objNewPort.SNMPEnabled = False
objNewPort.Put_
intRow = intRow + 1
Loop
objExcel.Quit
I appreciate any advice.
Thanks,
Ray
Put trace statements in file to see. "WScript.Echo "We Are here trace" ...
etc.
Last line to send output is line before failure. Or count lines from top of
notepad starting with "1".
--
Jim Vierra
"rham" <rh...@discussions.microsoft.com> wrote in message
news:103C6124-3C6E-45F0...@microsoft.com...
Line:15
Char:2
Error: Access Denied
Code: 80041003
Source: SWbemObjectEx
Thanks,
Ray
--
Jim Vierra
"rham" <rh...@discussions.microsoft.com> wrote in message
news:E885E46B-48B3-42D7...@microsoft.com...
You might try doing it with "Security" privilege on the "impersonate"
clause.
--
Jim Vierra
"rham" <rh...@discussions.microsoft.com> wrote in message
news:E9B75824-9C8D-4D41...@microsoft.com...
Hi,
You cannot use Win32_TCPIPPrinterPort to add a port, as Jim wrote,
all the properties in that class are Read-Only:
http://msdn.microsoft.com/library/en-us/wmisdk/wmi/win32_tcpipprinterport.asp
Another alternative is to use the prnadmin.dll that comes with the
MS Windows 2003 Server Resource Kit.
With prnadmin.dll you can e.g. do the following port handling from
e.g. VBScript:
- Adding/deleting ports (standard local ports, TCP LPR/RAW ports)
(local or remote)
Windows Server 2003 Resource Kit Tools
http://www.microsoft.com/downloads/details.aspx?FamilyID=9d467a69-57ff-4ae7-96ee-b18c4790cffd&DisplayLang=en
(The kit will install on WinXP or later, but you can copy needed
files over to other computers, and then run regsvr32.exe against
prnadmin.dll)
More about PrnAdmin (from the RK help file):
Printer Administration Objects (PrnAdmin) is a COM-based tool that
provides large-scale, noninteractive control of printers, drivers,
and ports on local and remote computers.
Using PrnAdmin, you can:
Add and delete a local or remote printer.
Add and delete printer connections.
Add and delete a local or remote form.
Add and delete a local or remote standard TCP/IP port (of type
Line Printer Remote (LPR) or RAW).
Add and delete a local or remote driver.
View a list of printers, ports, drivers, and forms on a local or
remote computer.
Control and configure a local or remote printer.
PrnAdmin consists of several scriptable COM objects residing in
Prnadmin.dll, which functions as a wrapper around Printui.dll.
Several Microsoft Visual Basic Script (VBScript) sample files are
included with the tool.
Note
For more detailed information on how to use PrnAdmin.DLL, see
Prnadmin.doc. This white paper provides additional information on
printer, drivers, ports and forms to help administrators and
programmers manage a large number of local and remote printers.
Corresponding Operating System Features
All the functionality of prnadmin.dll can be duplicated using the
printers folder and various wizards. Converting printer ports from
LPR to Standard TCP/IP is the only functionality in prnadmin.dll
for which there is no corresponding GUI.
For more information about PrnAdmin and the Windows Management
Instrumentation (WMI) scripts in Windows Server 2003, see
Designing and Deploying Print
Servers(http://go.microsoft.com/fwlink/?LinkID=4745) in the
Windows Server 2003 Deployment Kit.
Files Required
Prnadmin.dll
The following sample VBScript files are also included:
Prnadmin.doc
Clean.vbs
Clone.vbs (there is no WMI equivalent for the cloning script)
Conall.vbs
Defprn.vbs
Drvmgr.vbs
Forms.vbs
Persist.vbs
Portconv.vbs
Portmgr.vbs
Prncfg.vbs
Prnctrl.vbs
Prndata.vbs
Prnmgr.vbs
and
HOW TO: Programmatically Create a Printer and Printer Port by
Using PrinterAdmin (Prnadmin.dll) with a Visual Basic Script
in Microsoft Windows 2000
http://support.microsoft.com/default.aspx?scid=kb;en-us;321025
--
torgeir, Microsoft MVP Scripting and WMI, Porsgrunn Norway
Administration scripting examples and an ONLINE version of
the 1328 page Scripting Guide:
http://www.microsoft.com/technet/scriptcenter/default.mspx
Set objWMIService = GetObject("winmgmts:")
Set objNewPort = objWMIService.Get _
("Win32_TCPIPPrinterPort").SpawnInstance_
objNewPort.Name = "IP_169.254.110.14"
objNewPort.Protocol = 1
objNewPort.HostAddress = "169.254.110.14"
objNewPort.PortNumber = "9999"
objNewPort.SNMPEnabled = False
objNewPort.Put_
Also, I did try to do the impersonate privilege without success. Very
frustrating.
WMI documentation.
Some WMI classes (including Win32_Share and Win32_Process) include a Create method. If a class includes the Create method, that method can be used to create such things as a new shared folder or a new process. (or a new port)
Creating a new resource requires you to use the Get method to bind to the actual WMI class (rather than retrieve instances of the class). After you have an object representing the class, use the SpawnInstance_ method to create a new, "blank," instance of the class. Configure properties for the instance, and then call the Create method.
Ray
"Jim Vierra" <jvi...@msn.com> wrote in message news:eekCl4aU...@TK2MSFTNGP15.phx.gbl...
Server:
Windows Server 2003 R2, SP1
Workstation:
Windows XP Professional, SP2
The script, which I will paste below, works fine on my XP machine. I
can create the port AND the printer on my XP workstation.
I have found that Win32_TCPIPPrinterPort *WILL* work on my server. The
port will get created just fine, but the printer will not on the
server.
I am BRAND NEW to VBScript, my experience is limited, and I am learning
as I go along.
I'd like to know if I have to abandon this script and use the RK as
recommended previously, or if I can "fix" this to work properly...
Here is my script:
Code:
--------------------
Dim Computer, DriverName, DriverInf, IPAddress, PrinterHostName, PortName
Dim WMI, NewPort, NewDriver, NewPrinter
Dim ArgObj, var1
Dim strComputer, objWMIService, objPrinter
Set ArgObj = WScript.Arguments
var1 = ArgObj(0)
Computer = "."
DriverName = "HP Universal Printing PCL 6"
PrinterHostName = var1 & ".fabrikam.loc"
IPAddress = PrinterHostName
' END CALLOUT A
WScript.Echo "PrinterHostName: " & PrinterHostName
PortName = PrinterHostName
Set WMI = GetObject("winmgmts:{impersonationLevel=impersonate" _
& ",(LoadDriver)}!//" & Computer & "/root/cimv2")
Set NewPort = WMI.Get("Win32_TCPIPPrinterPort").SpawnInstance_
NewPort.HostAddress = IPAddress
NewPort.Name = PortName
NewPort.Protocol = 1
NewPort.SNMPEnabled = 1
NewPort.SNMPCommunity = "public"
NewPort.Put_
WScript.Echo "Created printer port: " & PortName
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set objPrinter = objWMIService.Get("Win32_Printer").SpawnInstance_
objPrinter.DriverName = DriverName
objPrinter.PortName = PortName
objPrinter.DeviceID = var1
objPrinter.Location = var1
objPrinter.Network = True
objPrinter.Shared = True
objPrinter.ShareName = var1
objPrinter.Default = True
objPrinter.Put_
WScript.Echo "Created printer: " & var1
WScript.Echo " Using Driver: " & DriverName
WScript.Echo " Shared As: " & var1
WScript.Echo " On Port: " & PortName
--------------------
--
greggplatinum
------------------------------------------------------------------------
greggplatinum's Profile: http://forums.techarena.in/member.php?userid=27212
View this thread: http://forums.techarena.in/showthread.php?t=92376