VBScript to the rescue! VBScript ain’t dead. PowerShell is pushed by Microsoft to replace it. But still, even MS uses VBScript. You know the Windows and Office activation scripts? Or the Office 2013 removal fixit tool (when Office 365 causes havoc)? It’s VBScript. Easy to use, stable and available on all Windows versions since ’98 and here to stay. So don’t let anyone tell you not to use it. It’s practical and easier to understand than PowerShell. Looking for a great VBScript editor and debugger to help you make the best scripts? Try VbsEdit.
Enough about that… here is the solution to view all shared network printers on a specific print server:
Option Explicit Dim wmi, cprinters, cports Dim computer, out, o Dim dports If WScript.Arguments.Count > 0 Then computer = WScript.Arguments(0) Else computer = "." End If Set dports = CreateObject("Scripting.Dictionary") Set wmi = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & computer & "\root\cimv2") Set cports = wmi.ExecQuery("Select * from Win32_TCPIPPrinterPort") For Each o In cports dports.Add o.Name, o Next out = "Name" & vbTab & "Location" & vbTab & "Comment" & vbTab & "Status" & vbTab & "Error" & vbTab & "IP" WScript.Echo out Set cprinters = wmi.ExecQuery("Select * from Win32_Printer Where Shared=1") For Each o In cprinters out = o.Name & vbTab & o.Location & vbTab & o.Comment & vbTab & o.PrinterStatus & vbTab & o.DetectedErrorState If Not IsEmpty(dports(o.PortName)) Then out = out & vbTab & dports(o.PortName).HostAddress End If WScript.Echo out Next
Copy & paste this text into your editor (please ban Windows Notepad, instead install Notepad++) and save the file as printers.vbs . Open a command prompt (cmd.exe) and run this command:
cscript //nologo printers.vbs [printserver] > printers.txt
The result is a tab delimited file that you can open in Excel. It will list the name, location, comment, status, error and ip address of all shared printers connected to the print server. For the meaning of the values in the status and error columns take a look at PrinterStatus and DetectedErrorState on http://msdn.microsoft.com/en-us/library/aa394363(v=vs.85).aspx .
First Post… more to follow!