"aroy" <> wrote in message
news:60a801cf-bc6e-43d3-b6e8-...
On Jul 28, 10:37 pm, "Pegasus \(MVP\)" <I....@fly.com.oz> wrote:
> "aroy" <aaronm...@gmail.com> wrote in message
>
> news:5518af76-da58-4afe-a44d-...
>
>
>
> > Greetings all,
>
> > I have a client who chooses to deploy printers via their login script.
> > For each of the ~30 printers I have a batch file containing:
>
> > :: Setting the default printer
> > rundll32 printui.dll,PrintUIEntry /in /n "\\server_name
> > \printer_name01"
> > rundll32 printui.dll,PrintUIEntry /y /n "\\server_name\priner_name01"
>
> > :: Setting the alternate printer
> > rundll32 printui.dll,PrintUIEntry /in /n "\\server_name
> > \printer_name02"
>
> > Users access is to these files is controlled by using ifmember.exe. If
> > user is a member of printer_group03 then run this batch file else move
> > on to next.
>
> > This works fine.
>
> > BUT, each time they login this scrip it run. How can I first check to
> > see if a specific printer is installed before adding it?
>
> > Essentially what I want to do is:
>
> > If exist(on local computer, NOT server) \\server_name\printer_name01
> > goto exit
> > if NOT exist \\server_name\printer_name01 add it
>
> > Is that at all possible??
>
> > thanks.
>
> Have a look at this help command: rundll32 printui.dll,PrintUIEntry /?
Thanks, best I can find in there is a /q. That hides the little dialog
box that pops up when the printer is added. That gets the job
done...sort of. The users are not bothered by the dialog box but, the
printers are still being installed each time they login regardless of
whether or not they are already installed.
I would still like to be able to check if the printer is installed on
the local machine first.
thanks,
===========
You could use the script below but your users might not
appreciate the delay it introduces into the logon process.
Invoking it remotely and creating a local tell-tale file would
get around the delay.
Set objWMI = GetObject("winmgmts:\\.\root\CIMV2")
Set colPrn = objWMI.ExecQuery("SELECT * FROM Win32_Printer")
For Each objItem In colPrn
WScript.Echo "Printer name: " & objItem.name & VbCrLf & _
"====================================" & VbCrLf & _
"Port Name: " & objItem.PortName & VbCrLf & _
"Printer State: " & objItem.PrinterState & VbCrLf & _
"Printer Status: " & objItem.PrinterStatus & VbCrLf & _
"PrintJobDataType: " & objItem.PrintJobDataType & VbCrLf & _
"Print Processor: " & objItem.PrintProcessor & VbCrLf & _
"Spool Enabled: " & objItem.SpoolEnabled & VbCrLf & _
"Separator File: " & objItem.SeparatorFile & VbCrLf & _
"Status: " & objItem.Status & VbCrLf & _
"StatusInfo: " & objItem.StatusInfo & VbCrLf & _
"ShareName: " & objItem.ShareName & VbCrLf & _
"Horizontal Res: " & objItem.HorizontalResolution & VbCrLf & _
"Vertical Res: " & objItem.VerticalResolution
WScript.Echo "Work Offline: " & objItem.WorkOffline
Next
|