I normally don’t do much VBScript stuff, but sometimes I have to, and these tips helped me big time:
- You can use Visual Studio 2005, 2008 SP1 or 2010 to edit VBS files (with syntax highlighting, etc)
- Debugging VBS files with cscript.exe and Visual Studio requires an extra step: you need to initiate this from the script side
–jeroen
This was the script in question (mimicked a bit after Prnmngr.vbs):
It uses AddPrinterConnection and RemovePrinterConnection of the Windows Scripting Host Network object to add/remove local LPT ports to network printers so that DOS applications can still print.
So it is equivalent to NET USE LPT1 \\servername\printershare
Option Explicit On Error Resume Next Dim objWshNetwork Set objWshNetwork = WScript.CreateObject("WScript.Network") ' This is the same as "NET USE LPT#: \\servername\printername" but with extra error checking Sub ShowError (txtMessage, txtCaption) Call MsgBox (txtMessage, vbCritical, txtCaption) End Sub Sub MapPrinter(txtPort, txtNetworkPrinter, txtAlternatePort) On Error Resume Next Call MsgBox ("mapping " & txtPort & " to " & txtNetworkPrinter, 16, txtNetworkPrinter) objWshNetwork.removePrinterConnection txtPort, True ' If Err.Number <> 0 Then ' Call ShowError ("Unmapping " & txtPort & "; Error # " & CStr(Err.Number) & " " & Err.Description, txtNetworkPrinter) ' Err.Clear ' End If objWshNetwork.addPrinterConnection txtPort, txtNetworkPrinter If Err.Number <> 0 Then Call ShowError ("Redirecting " & txtPort & " to network printer " & txtNetworkPrinter & " failed," & _ "Error # " & CStr(Err.Number) & ": " & Err.Description _ , txtNetworkPrinter) Err.Clear End If End Sub Dim objPrinter For Each objPrinter In GetObject("winmgmts:").ExecQuery("select * from Win32_Printer where default=true") Dim txtNetworkPrinter txtNetworkPrinter = objPrinter.ServerName & "\" & objPrinter.ShareName If txtNetworkPrinter = "\" Then Call ShowError ("You do not have a default printer that is a network printer, so there is nothing to redirect" _ , txtNetworkPrinter) Else Call MapPrinter("LPT1:", txtNetworkPrinter) Call MapPrinter("LPT2:", txtNetworkPrinter) End If Next
Filed under: Development, Scripting, Software Development, VBScript, Visual Studio 11, Visual Studio 2005, Visual Studio 2008, Visual Studio 2010, Visual Studio and tools
