VBScript to add network printer at logon (Vista)


Recommended Posts

Is there a specific VBScript to add printers at logon for Windows Vista clients?

The script i constructed seems to great under XP but users are constantly complaining printers are missing, these users are on Vista.

I've been messing for a few hours and got it to ask to install the printer driver at logon but it still didn't add the printer.

I use something like this:

' Read security group membership
 adsDomainGroups.Filter = Array("Group")
 For Each adsGroup in adsDomainGroups
  Group = UCase(adsgroup.name)

 UserName = UCase(WshNetwork.UserName)
 server = "\\server" 'Change to match the users server
home = "W:" ' Put the users home drive letter here.

  If group = UCASE("staff") Then CheckGroup adsgroup.name, Username, home, server & "\staff$\" & UserName, "staff"
  Next
 ' Maps network drives
	 WshNetwork.MapNetworkDrive "x:", server & "\shared"
	 WshNetwork.MapNetworkDrive "s:", server & "\software"
	 WshNetwork.MapNetworkDrive "y:", server & "\Childrens Shared"

 ' Adds classroom printers
		 PrinterPath1 = server & "\ICT Suite"
		 PrinterDriver1 = "Generic 35C-4 Series PS"
		 Wshnetwork.addwindowsprinterconnection Printerpath1, Printerdriver1
		 Wshnetwork.setdefaultprinter server & "\ICT Suite"

this is why I don't like using vbscripts. they work great in the fashion that you are used to, however something changes in the way a script is handled (common in os changes) you end up rewriting the script or the lines that are buggy.

http://www.computerperformance.co.uk/ezine/ezine16.htm

that should take care of your issue. basically use the unc path statement.

Thanks for the web link.

The following script:

Option Explicit
Dim netPrinter, UNCpath
UNCpath = "\\server\ICTSuite"
Set netPrinter = CreateObject("WScript.Network")
netPrinter.AddWindowsPrinterConnection UNCpath
WScript.Echo "Your printer is mapped from : " & UNCpath
WScript.Quit

generated an error.. The data is invalid. 8007000D (null)

  Lilrichie said:
Set WshNetwork = CreateObject("WScript.Network")
 WshNetwork.AddWindowsPrinterConnection "\\printerserver\printername"
 WshNetwork.SetDefaultPrinter "\\printerserver\printername"

Would this not work under Vista then?

Well it's not working for me. :( I am trying this:

If group = UCASE("staff") Then CheckGroup adsgroup.name, Username, home, server & "\staff$\" & UserName, "staff"
 Next
' Maps network drives
	WshNetwork.MapNetworkDrive "x:", server & "\shared"
	WshNetwork.MapNetworkDrive "s:", server & "\software"
	WshNetwork.MapNetworkDrive "y:", server & "\Childrens Shared"

' Maps network printers
	WshNetwork.AddWindowsPrinterConnection "\\server\ICTSuite"
	WshNetwork.SetDefaultPrinter "\\server\ICTSuite"

The network drives are mapping... but no sign of the printer.

  forcer said:
Well it's not working for me. :( I am trying this:

If group = UCASE("staff") Then CheckGroup adsgroup.name, Username, home, server & "\staff$\" & UserName, "staff"
 Next
' Maps network drives
	WshNetwork.MapNetworkDrive "x:", server & "\shared"
	WshNetwork.MapNetworkDrive "s:", server & "\software"
	WshNetwork.MapNetworkDrive "y:", server & "\Childrens Shared"

' Maps network printers
		Set WshNetwork = CreateObject("WScript.Network") 'this tells the script what you want to do
	WshNetwork.AddWindowsPrinterConnection "\\server\ICTSuite"
	WshNetwork.SetDefaultPrinter "\\server\ICTSuite"

The network drives are mapping... but no sign of the printer.

I think you have missed a line out (try above)

  Lilrichie said:
I think you have missed a line out (try above)

I have that at the top of the script

Public menutype, obj, WshNetwork, fs, adsDomainGroups
Set obj = CreateObject("WScript.Shell")
Set WshNetwork = CreateObject("WScript.Network") '<---here
domain = WshNetwork.UserDomain
Set adsDomainGroups = GetObject("WinNT://" & domain)
' Set fs = CreateObject("Scripting.FileSystemObject")

After looking around it appears most of the problems are caused by UAC ... you can't run VBS or modify the registry. There are lots of problems online with people not being able to run scripts under Vista.

To get around this it requires some editing in task scheduler to elevate scripts or running a reg script locally which will add the ability to run vbscripts as administrator... but this means i have to go round each computer and do it manually.

This has lead me to believe that there must be another way to assign printers in a network environment? if there isn't, why would Microsoft implement this and make it almost impossible to install printers with UAC enabled, when they highly recommend you don't disable it?

I have pretty much solved the issue, here is the info for anyone else that might be having problems, someone may find it useful

First of all i decided to split everything into location, this way i could set the default printer to the closest printer for that area as we have 3 different printers around the building. So i added a 'room' key to the registry.

HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\

REG_SZ "room" .. value "AREANAME"

i then created the following to read the registry key:

  Quote
Public obj, WshNetwork

Set obj = CreateObject("WScript.Shell")

server = "\\server" 'Change to match the users server

' Reads the room registry key

room = obj.regread("HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\room")

' Reads the room key and if it = "SERVER" stops the script running. Put the word "SERVER" in all servers room keys

If room = UCase ("SERVER") Then

Msgbox "This is the " & room & "." & vbTab & "Stopping the script" & vbCr & "Right click the script and select edit"

WScript.quit

Else

End If

now to assign the printers to each area:

	If room = "AREANAME" Then

		 PrinterPath1 = server & "\Printername"
		 PrinterPath2 = server & "\Printername2"
		 PrinterDriver1 = "Name of Printer"
		 PrinterDriver2 = "Name of Printer"
		 Wshnetwork.addwindowsprinterconnection Printerpath1, Printerdriver1
		 Wshnetwork.addwindowsprinterconnection Printerpath2, Printerdriver2
		 Wshnetwork.setdefaultprinter server & "\Printername"

	 Else
	 End If

continue that code for the amount of area's you have assigned. This way you can set default printers for different area's

the first time the computer is logged on it will ask you to install the printer drivers so you will need admin credentials... it only asks once and printers get mapped after every other logon. You still need to go round each computer manually but at least they are being mapped.

The If room = UCase("SERVER") statement should amended to one of the below...

"SERVER" is already in uppercase so no need to UCase it. The variable you are reading in "room" may be in mixed case therefore you need to UCase that to ensure the IF statement captures it.

' Reads the room registry key
room = obj.regread("HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\room")

' Reads the room key and if it = "SERVER" stops the script running. Put the word "SERVER" in all servers room keys
If UCase(room) = "SERVER" Then

or

' Reads the room registry key
room = UCase(obj.regread("HKLM\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName\room"))

' Reads the room key and if it = "SERVER" stops the script running. Put the word "SERVER" in all servers room keys
If room = "SERVER" Then

  • 2 weeks later...

My printer vbs script looks like this

Dim WSHShell, WSHNetwork, objDomain, DomainString, UserString, UserObj, Path, strUNCPrinter, objNetwork

Set WshNetwork = WScript.CreateObject("WScript.Network")
On Error Resume Next
Set WSHPrinters = WSHNetwork.EnumPrinterConnections
PrinterPath = "\\MYSERVER\PRINTERNAME"
PrinterExists = False
For LOOP_COUNTER = 0 To WSHPrinters.Count - 1 Step 2
	If WSHPrinters.Item(LOOP_COUNTER +1) = PrinterPath Then
	  PrinterExists = True
	End If
Next
If PrinterExists = 0 Then
  WshNetwork.AddWindowsPrinterConnection "\\MYSERVER\PRINTERNAME"
End If

If you change "PrinterExists = -1" that means if the printer is already connected then run a different command like remove the printer (say it's an old printer that you don't want any of your clients to see anymore).

This script works for both XP/Vista machines on my domain. I have the end of my log on script execute the printer check.vbs so that way every time a person logs in, it doesn't always assume a printer is connected and just keep reinstalling it.

This topic is now closed to further replies.
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Posts

    • Microsoft 365 Copilot Notebooks now integrated in OneNote on Windows by Paul Hill Microsoft has announced that Enterprise customers with Microsoft 365 Copilot, SharePoint, or OneDrive licenses can now use Microsoft 365 Copilot Notebooks integrated directly with OneNote on Windows. Copilot Notebooks are AI-powered and bring together different resources such as Copilot Chat, files, notes, and links into a single space to make you more productive. The Redmond giant wants to make it easier for customers to gather content, understand complex topics, and create “smarter content” with Copilot Notebooks. This integration is squarely aimed at Enterprise customers, not Personal or Family subscribers. How Copilot Notebooks enhance productivity in OneNote When you open OneNote on Windows, you should see Copilot Notebooks in the left-hand sidebar, from here you can view or edit existing notebooks or you can create one by going to Home > Create Copilot Notebook or New notebook. During the creation of your new notebook, you can give it a name and add references such as OneNote pages, .docx, .pptx, .xlsx, .pdf, or .loop files. This gives Copilot extra context to provide you with more refined answers. Once you have created a notebook and added your reference documents, you can use Copilot Notebooks to help you gather insights from your documents, draft summaries, and generate audio overviews. An important caveat to mention about these notebooks is that you can only add 20 files as references and only individual OneNote pages, as opposed to sections and notebooks, can be added. Microsoft could add support for these in the future, but you can’t add them yet. Another limitation right now is that some OneNote features aren’t functional within Copilot Notebooks, including tags, section groups, inking, templates, password protection, Immersive Reader, and offline support. Availability and what it means for enterprise users Microsoft 365 Copilot Notebooks in OneNote for Windows are available for Enterprise customers with an appropriate license (anyone with a Microsoft 365 Copilot, SharePoint, or OneDrive license) running OneNote Version 2504 (Build 18827.20128) or later. If you have any other feedback to give to Microsoft, you can give it via Help > Feedback. As an Insider preview, Microsoft will likely improve this before declaring it stable so let Microsoft know of any issues you have. Now that the feature is available as a preview, it’s the perfect time for IT admins and other decision-makers to evaluate the feature to see how it could benefit their wider organization.
    • Mixxx 2.5.2 by Razvan Serea Mixxx is powerful, free, and open-source DJ software designed for both beginners and professionals. It offers real-time beatmatching, auto DJ, effects, and MIDI controller support. With a clean interface and compatibility across Windows, macOS, and Linux, Mixxx is ideal for live performances, radio broadcasts, or practice sessions. Its active community and constant updates make it a reliable tool for any DJ. Mixxx integrates the tools DJs need to perform creative live mixes with digital music files. Whether you are a new DJ with just a laptop or an experienced turntablist, Mixxx can support your style and techniques of mixing. Mixxx key features: Realtime audio engine with low-latency performance MIDI and HID controller mapping with customizable scripting (JavaScript-based) Vinyl DVS support (absolute & relative timecode modes) OpenSL, ASIO, WASAPI, and JACK audio backend support Advanced BPM & musical key detection (KeyFinder integration) Quantized beat sync and phase locking Effect chain routing with LADSPA plugin support 4-deck mixing with independent EQ and gain control Support for wide file formats (MP3, FLAC, OGG, WAV, AIFF) Broadcasting via Icecast and Shoutcast with metadata support Library with Crate, Playlist, and Smart Playlist organization Multi-core CPU support for performance optimization Microphone and Auxiliary input routing with talkover ducking OSC and Web MIDI support Skinnable and themable Qt-based UI Cue points, hotcues, and looping with quantization Recording in lossless WAV or compressed formats Clock-synced looping and beatjump Mixxx 2.5.2 changelog: Library Fix playlist export when name contains a dot Fix loading the wrong track via drag and drop when using symlinks Fix: byte order in hotcue comments imported from rekordbox Tracks table: show ReplayGain with max. 2 decimals, full precision in tooltip Fix keyboard mappings with non-ASCII characters on Linux Computer feature: enable initial sorting during population Computer feature: avoid false-positve 'has children' for non-directory links Fix column header mapping when using external library Fixed Single track cover reload on reload metadata from file Controller Mappings Arturia KeyLab Mk1: initial mapping Denon MC7000: slicer mode TypeError Denon MC7000: crossfader curve using wrong parameter DJ TechTools MIDI Fighter Twister: support 4 decks Hercules DJControl Inpulse 500: the crossfader was not reaching 100% to the right end Icon Pro Audio iControls: initial mapping Numark Mixtrack Platinium FX: Fix 4 steps browsing issue Traktor Kontrol S3: Use GUI config for settings Traktor S2 MK3: Fixed LED issue Traktor S4 MK2: Use engine settings API for configuration Traktor S4 MK3: prevent sync lockup, add setting for tempo center snap Controller Backend Control picker: Allow to learn MIDI Aux/Mic enable controls Make [Main],headSplit CO persistent across restart Fix MIDI Controller button learning Fix learning with "No Mapping" selected Unit tests for engine.beginTimer engine-api.d.ts: brake()/spinback() documentation Target support Fix building with a CMake multi-config setup Fix building with gcc >= 14 with LTO and clang >= 19 (fpclassify) Fix: gcc -Warray-bounds= in fidlib by using a flexible member Added Linux Mint Codenames to debian_buildenv.sh Add hidden [Config],notify_max_dbg_time setting to reduce warnings in developer mode Detect arch and fail early if not supported when installing buildenv Misc Vinyl Control: Reduce sticker drift Fix infinite number of pop ups of the "No Vinyl|Mic|Aux|Passthrough input configured" dialog Reduce CPU usage with Trace log messages Fix adjust Gain after adopting it as ReplayGain only in requesting playe Skins: add loop anchor toggle to Deere, Shade, Tango Sound Hardware preferences: add manual link for Mic monitoring modes Work around an Ubuntu, Ibus or Qt issue regarding detecting the current keyboard layout. Fix BPM rounding for the 3/2 case Update cue & play indicators on paused decks when switching cue mode Download: Mixxx 2.5.2 | 113.0 MB (Open Source) Links: Mixxx Home page | Other OSes | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
    • KDE brings Wayland PiP to Plasma 6.5, adds finishing touches to 6.4 as release nears by David Uzondu The KDE team has released its This Week in Plasma update, showing the final polish being applied to Plasma 6.4 ahead of its June 17 release. Last week, the KDE team brought performance upgrades, and this week the team is continuing that with improvements like faster loading for System Monitor components in Plasma 6.4. Future work for Plasma 6.5 is already underway, and it includes a feature that many have probably been waiting for: proper Picture-in-Picture support on Wayland. This uses an experimental version of the Wayland PiP protocol, which means applications like Firefox that also implement it can finally display PiP windows correctly. It is a long-overdue addition that moves the Wayland session closer to feature parity with X11. The devs also merged KWin's Background Contrast effect into the Blur effect. Virtual desktops can now be re-ordered from the Pager widget, a feature previously missing. Invert and Zoom settings have been moved into the Accessibility page, which is a more sensible place for them than the Desktop Effects page was. The team also brought consistency to the Breeze application style, with animated effects for checkboxes and radio buttons now working in QtQuick-based apps. Other small cleanups include standardizing the section headers in the Disks & Devices, Networks, and Bluetooth widgets. For those who do a lot of screen recording, Spectacle now makes it much clearer how to stop a recording, both in its notifications and shortcut names. As for the immediate future, Plasma 6.4 and its first point release are getting accessibility and user interface tweaks. The team improved text contrast for labels used in secondary roles throughout Plasma, making things like brightness indicators much easier to read. The Kicker Application Menu in 6.4 can now scroll horizontally when a search returns a ton of results, so you can actually see all of them. The team also delivered some stability improvements in Plasma 6.4.0, most notably fixing a long-standing issue where adding widgets to oversized panels could freeze the entire shell. Discover also got a much-needed fix for a crash that occurred when suggesting replacements for unsupported Flatpak apps. On the usability side, dragging files into a Folder View widget no longer causes glitchy visuals, and Open and Save dialogs from Flatpak-based browsers now properly allow the preview pane to open. Printing from Flatpak GTK apps now respects correct sizing, and installing or removing apps no longer wipes out your search input in Kicker or Kickoff while you're using it. Other notable fixes include: Selection rectangles on the desktop now render properly when using custom fonts or sizes (Plasma 6.3.6) A crash in System Monitor charts used by apps and Plasma components has been resolved (Frameworks 6.15) Switching process views in System Monitor no longer causes crashes (Frameworks 6.16) Open and Save dialogs no longer close when hovering over specific files (Frameworks 6.16) A thumbnailer crash on X11 caused by certain widget styles has been fixed (KDE Gear 25.04.3) Frameworks 6.15 also speeds up System Monitor by delaying tree view arrow loading There are still 3 high-priority Plasma bugs holding out, and the list of quick-win "15-minute bugs" has grown to 23.
    • Hasleo Backup Suite Free 5.4.2.0 by Razvan Serea Hasleo Backup Suite Free is a free Windows backup and restore software, which embeds backup, restore and cloning features, it is designed for Windows operating system users and can be used on both Windows PCs and Servers. The backup and restore feature of Hasleo Backup Suite can help you back up and restore the Windows operating systems, disks, partitions and files (folders) to protect the security of your Windows operating system and personal data. The cloning feature of Hasleo Backup Suite can help you migrate Windows to another disk, or easily upgrade a disk to an SSD or a larger capacity disk. System Backup & Restore / Disk/Partition Backup & Restore Backup Windows operating system and boot-related partitions, including user settings, drivers and applications installed in these partitions, which ensures that you can quickly restore your Windows operating system once it crashes. Viruses, power failure, or other unknown reasons may cause data loss, so it is a good habit to regularly back up the drive that stores important files, you can at least recover lost files from the backup image files in the event of a disaster. System Clone / Disk Clone / Partition Clone Migrate the Windows operating system from one disk to another SSD or larger disk without reinstalling Windows, applications and drivers. Clone entire disk to another disk and ensure that the contents of the source disk and the destination disk are exactly the same. Clone a partition completely to the specified location on the current disk or another disk and ensure that the data will not be changed. File Backup & Restore Back up specified files(folders) instead of the entire drive to another location to protect your data, so you can quickly restore files(folders) from the backup image files when needed. Incremental/Differential/Full Backup Different backup modes are supported, you can flexibly choose data protection schemes, which can improve backup performance and save storage space while ensuring data security. Delta Restore Delta restore uses advanced delta detection technology to check the changed blocks on the destination drive and restore only the changed blocks, so it has a faster restore speed than the traditional full restore. Universal Restore This feature can help us restore the Windows operating system to computers with different hardware and ensure that Windows can work normally without any hardware compatibility issues. Hasleo Backup Suite 5.4.2.0 changelog: Added backup image delete feature Added storage path management feature Improved file backup feature Show application notifications in Windows Notification Center Various other bug fixes and feature improvements Download: Hasleo Backup Suite 5.4.2.0 | 34.4 MB (Freeware) Links: Hasleo Backup Suite Website | Hasleo Backup Suite Guide | Screenshot Get alerted to all of our Software updates on Twitter at @NeowinSoftware
  • Recent Achievements

    • One Month Later
      5i3zi1 earned a badge
      One Month Later
    • Week One Done
      5i3zi1 earned a badge
      Week One Done
    • Week One Done
      julien02 earned a badge
      Week One Done
    • One Year In
      Drewidian1 earned a badge
      One Year In
    • Explorer
      Case_f went up a rank
      Explorer
  • Popular Contributors

    1. 1
      +primortal
      545
    2. 2
      ATLien_0
      227
    3. 3
      +FloatingFatMan
      160
    4. 4
      Michael Scrip
      113
    5. 5
      +Edouard
      98
  • Tell a friend

    Love Neowin? Tell a friend!