JeffBeall
asked on
visual basic scripting
I need to use a visual basic script to add a printer then change the default printer to the added printer in windows 7. I CAN'T use the usual method of going to devices and printers, and I CAN'T use group policies. PLEASE, do not suggest group policies! let's just say this HAS to be done through a visual basic script.
From googleing - Since I am NOT a scripting person - I have constructed this so far
Dim printer, UNCpath1, slash1, slash2
slash1 ="\"
slash2 ="\\"
printer = InputBox("What printer do you want to be the default? ", "Create
Default Printer")
UNCpath1 = InputBox("What server is this printer on? ", "Server")
Set printer = CreateObject("WScript.Netw ork")
printer.AddWindowsPrinterC onnection slash2 & UNCpath1 & slash1 & printer
printer.SetDefaultPrinter slash2 & UNCpath1 & slash1 & printer
WScript.Quit
however when the script runs I get this.
Error: Object doesn't support this property of method
and says the error is at line 13 char 1
so I'm guessing it doesn't like the slashes, however, if I take the slashes out, the script looks like this
Dim printer, UNCpath1, slash1, slash2
printer = InputBox("What printer do you want to be the default? ", "Create
Default Printer")
UNCpath1 = InputBox("What server is this printer on? ", "Server")
Set printer = CreateObject("WScript.Netw ork")
printer.AddWindowsPrinterC onnection UNCpath1 & printer
printer.SetDefaultPrinter UNCpath1 & printer
WScript.Quit
and the error is
error: object doesn't support this property or method
and the line number is 9 character 1
I can't even qualify as a noobie at scripting so I thought I would ask for some help, because I am completely guessing at what is wrong. My guess is it doesn't want the slashes but if I don't have them, there seems to be another syntax error? ( not even sure how plausible that sounds). Or maybe it does need the slashed but I'm just adding them wrong. Also, I'm stuck on the whole slash thing because these are network printers, and usually I would add them using the UNC, for example
\\servsername\printershare
So, any ideas on how to fix my script?
From googleing - Since I am NOT a scripting person - I have constructed this so far
Dim printer, UNCpath1, slash1, slash2
slash1 ="\"
slash2 ="\\"
printer = InputBox("What printer do you want to be the default? ", "Create
Default Printer")
UNCpath1 = InputBox("What server is this printer on? ", "Server")
Set printer = CreateObject("WScript.Netw
printer.AddWindowsPrinterC
printer.SetDefaultPrinter slash2 & UNCpath1 & slash1 & printer
WScript.Quit
however when the script runs I get this.
Error: Object doesn't support this property of method
and says the error is at line 13 char 1
so I'm guessing it doesn't like the slashes, however, if I take the slashes out, the script looks like this
Dim printer, UNCpath1, slash1, slash2
printer = InputBox("What printer do you want to be the default? ", "Create
Default Printer")
UNCpath1 = InputBox("What server is this printer on? ", "Server")
Set printer = CreateObject("WScript.Netw
printer.AddWindowsPrinterC
printer.SetDefaultPrinter UNCpath1 & printer
WScript.Quit
and the error is
error: object doesn't support this property or method
and the line number is 9 character 1
I can't even qualify as a noobie at scripting so I thought I would ask for some help, because I am completely guessing at what is wrong. My guess is it doesn't want the slashes but if I don't have them, there seems to be another syntax error? ( not even sure how plausible that sounds). Or maybe it does need the slashed but I'm just adding them wrong. Also, I'm stuck on the whole slash thing because these are network printers, and usually I would add them using the UNC, for example
\\servsername\printershare
So, any ideas on how to fix my script?
Whoops - nevermind - I see the problem...you're using printer twice...try this:
Dim printer, UNCpath1, slash1, slash2
slash1 ="\"
slash2 ="\\"
printername = InputBox("What printer do you want to be the default? ", "Create Default Printer")
UNCpath1 = InputBox("What server is this printer on? ", "Server")
Set printer = CreateObject("WScript.Network")
printer.AddWindowsPrinterConnection slash2 & UNCpath1 & slash1 & printername
printer.SetDefaultPrinter slash2 & UNCpath1 & slash1 & printername
WScript.Quit
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
wow, thank you so much for the help. but for the shorter script, it's not setting the default printer. Did I do something wrong there?
ASKER
hang on a second, it's working, I think the problem was I was using remote desktop on a test pc, and under local resources, printers were checked.
Once I unchecked printers, it worked fine.
thanks so much again for the help.
I'm so new to scripting, I would have never have thought to put
printername =
on that one line, especially since I didn't declare it at the DIM statement.
Once I unchecked printers, it worked fine.
thanks so much again for the help.
I'm so new to scripting, I would have never have thought to put
printername =
on that one line, especially since I didn't declare it at the DIM statement.
you DIM statement is generally an optional item. You don't have to declare your variables upfront, unless you're script contains Option Explicit.
I rarely declare any variables in my shorter script, but it is considered good practice.
Typically anytime you declare an object that's going to have the potential to consume a lot of resources, you want to make sure you destroy it when you're done (objVariable = Nothing).
But vbscript does that upon exit/quit anyway, so again, it's mostly just good coding practice.
I rarely declare any variables in my shorter script, but it is considered good practice.
Typically anytime you declare an object that's going to have the potential to consume a lot of resources, you want to make sure you destroy it when you're done (objVariable = Nothing).
But vbscript does that upon exit/quit anyway, so again, it's mostly just good coding practice.
ASKER
thank you for the help, it's working exactly how I need it to work. You were very helpful,
Glad I could help - thanx for the grade! :^)
try this - all I've done is combine the lines as needed...
Open in new window