Windows Scripting: Adding/removing network printers and drives

While I normally make posts related to web development, I may occasionally post something that isn't used in web development, but still has some kind of relationship (normally the underlying technology used) - for example: VBScript - Set Homepage (MSIE) / Add Notepad to Send To.

In this case, it is VB Scripting and is an example of how to perform several common tasks (related to printers and drives) that network/server administrators may want to do, through a simple script (could be via login script, or executed directly on the client) rather than using the Windows GUI. It also demonstrates how to do basic error handling. Just take the following code (tweak as needed) and paste it in a script file (e.g. login.vbs). Only been tested in Windows XP (for Windows 98, you have to also define the driver name as a second parameter for AddWindowsPrinterConnection, it should work as is in Windows 2000).

Option Explicit
Dim WSHNetwork 
Dim WSHShell

On Error Resume Next

Set WSHNetwork = CreateObject("WScript.Network")
Set WSHShell = CreateObject("WScript.Shell")

rem Add a printer
WSHNetwork.AddWindowsPrinterConnection "\\HOSTNAME\PrinterShareName"
HandleError "Could Not Add Printer"

rem Set this as the default printer
WSHNetwork.SetDefaultPrinter "\\HOSTNAME\PrinterShareName"
HandleError "Could Not Set As Default Printer"

rem Remove an existing printer
WSHNetwork.RemovePrinterConnection "\\HOSTNAME\RemovePrinterShareName"
HandleError "Could Not Remove Printer / Printer Already Removed"

rem Map a drive
WSHNetwork.MapNetworkDrive "L:", "\\HOSTNAME\ShareName"
HandleError "Could Not Map Drive"

rem Remove a drive
WSHNetwork.RemoveNetworkDrive "M:"
HandleError "Could Not Remove Mapped Drive"


Function HandleError(Title)
 If Err.Number <> 0 Then
  rem Add to event log. First parameter can be:
  rem 0 (SUCCESS), 1 (ERROR), 2 (WARNING)
  rem 4 (INFORMATION), 8 (AUDIT_SUCCESS), 16 (AUDIT_FAILURE)
  WSHShell.LogEvent 1, "Error: " & Title & Chr(13) & "Error Number: " & Err.Number & Chr(13) _
   & "Description: " & Err.Description
  Err.Clear
 End If
End Function

You can call this from a batch file (e.g. login.cmd)

@echo off
set wsh=no
rem Loop through folders in path and check if cscript.exe exists
for %%p in (%path%) do if exist %%p\cscript.exe set wsh=yes
if %wsh%==no goto wshno
:wshyes
cscript login.vbs
goto finally
:wshno
echo Windows Scripting Not Installed
:finally
rem script has finished

Comments

me said…
great script, works right out of the box. Could you add the social bookmarking button onto your webpage too please, it makes it easier for me to digg you. Thanks 4 the script again.

Popular posts from this blog

Link: HTML Agility Pack (.NET)

Basic Excel Spreadsheet Generation (ASP/ASP.NET)

ASP.NET: Binding alphabet to dropdown list