Avatar billede hubertus Seniormester
01. maj 2008 - 15:06 Der er 10 kommentarer og
1 løsning

check om en printer eksistere

Jeg har følgende kode som kaldes fra et kix script.
Koden nedenfor er oprettet som en print.vbs. Jeg vil gerne have at der checkes for om printeren eksistere i forbejen? evt. en optimering af koden. Hvem har et bud?

Option Explicit

Dim objNetwork, StrUncPrinter1,StrUncPrinter2,StrUncPrinter3,

  StrUncPrinter1 = "\\printserver\P001" 
  StrUncPrinter2 = "\\Rprintserver\P002"
  StrUncPrinter3 = "\\printserver\P003" 
  StrUncPrinter4 = "\\printserver\P004" 

  Set objNetwork = CreateObject("WScript.Network")
  objNetwork.AddWindowsPrinterConnection StrUncPrinter1
  objNetwork.AddWindowsPrinterConnection StrUncPrinter2
  objNetwork.AddWindowsPrinterConnection StrUncPrinter3
  objNetwork.AddWindowsPrinterConnection StrUncPrinter4
  objNetwork.SetDefaultPrinter StrUncPrinter1

  set objNetwork= nothing


WScript.Quit
Avatar billede hubertus Seniormester
01. maj 2008 - 21:23 #1
en trykfejl i forbejen  - i forvejen.
Avatar billede morten_leth Nybegynder
02. maj 2008 - 10:08 #2
Altså den hurtige og nemme løsning ville jo være at lave en

On error resume next

Hvilket gør at scriptet ikke fejler men blot kører viderer hvis den kommer med en fejl.
Avatar billede morten_leth Nybegynder
02. maj 2008 - 10:09 #3
Option Explicit

Dim objNetwork, StrUncPrinter1,StrUncPrinter2,StrUncPrinter3,

On error resume next

  StrUncPrinter1 = "\\printserver\P001" 
  StrUncPrinter2 = "\\Rprintserver\P002"
  StrUncPrinter3 = "\\printserver\P003" 
  StrUncPrinter4 = "\\printserver\P004" 

  Set objNetwork = CreateObject("WScript.Network")
  objNetwork.AddWindowsPrinterConnection StrUncPrinter1
  objNetwork.AddWindowsPrinterConnection StrUncPrinter2
  objNetwork.AddWindowsPrinterConnection StrUncPrinter3
  objNetwork.AddWindowsPrinterConnection StrUncPrinter4
  objNetwork.SetDefaultPrinter StrUncPrinter1

  set objNetwork= nothing


WScript.Quit
Avatar billede hubertus Seniormester
02. maj 2008 - 10:59 #4
Hej Morten
Det var nu ikke fordi den fejler, jeg vil blot ikke have, at der oprettes en connection, hvis den allerede findes. Derfor vil jeg have et check på, om den eksistere.
Avatar billede morten_leth Nybegynder
02. maj 2008 - 11:12 #5
Tjah det vil jeg nu os mene du opnår vha. den måde.
Hvis printeren er der fejler den og går videre hvis printeren ikke er der opretter den forbindelse og går videre...

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer")

For Each objPrinter in colInstalledPrinters
    Wscript.Echo "Name: " & objPrinter.Name
    Wscript.Echo "Location: " & objPrinter.Location
    Wscript.Echo "Default: " & objPrinter.Default
Next

Dette her kan liste dine printer navne... det kræver godt nok lidt tilretning men det er da et skridt i den rigtige retning...
Avatar billede morten_leth Nybegynder
02. maj 2008 - 11:34 #6
Nu har jeg lige tjekket det script du har der, hvis det er printeren er der i forvejen sker der faktisk slet ikke noget scriptet fejler ikke og den opretter ikke printeren igen...
Jeg kan umiddelbart ikke se hvad problemet egentlig er...

Hvis jeg var dig ville jeg bare beholde det du har der i stedet for, det andet er unødig komplisering af scriptet, selvfølgelig kun hvis du spørger mig....
Avatar billede hubertus Seniormester
02. maj 2008 - 11:46 #7
Det kan du have ret i.

Tak for hjælpen :O)

Lægger du et svar?
Avatar billede morten_leth Nybegynder
02. maj 2008 - 22:45 #8
He he, tjah jeg behøves nu ikke at få nogen point for det, medmindre du virkelig føler dig forpligtet til det.. ha ha

Kan du have en god weekend.
Avatar billede hubertus Seniormester
03. maj 2008 - 08:36 #9
Tak i lige måde :O))- det er ok med point - jeg samler ikke på dem.
Avatar billede hubertus Seniormester
08. maj 2008 - 09:47 #10
Hej igen
Ved du hordan jeg via scriptet sletter alle printere? Vi har mange brugere der arbejder på de samme maskiner, men de har forskellige behov for printere. Jeg vil derfor gerne have mulighed for at slette overflødige printer, samt sætte en anden default printer.
Avatar billede morten_leth Nybegynder
08. maj 2008 - 09:58 #11
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer")

For Each objPrinter in colInstalledPrinters
    objPrinter.Delete_
Next

Sådan her sletter du alle printere...

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer where DeviceID = 'ScriptedPrinter'")

For Each objPrinter in colInstalledPrinters
    objPrinter.Delete_
Next

Sådan her sletter du en printer, udfra et navn.

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where DriverName = 'HP QuietJet'")

For Each objPrinter in colInstalledPrinters
    objPrinter.Delete_
Next

Sådan her sletter du en printer udfra Driver navnet...

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colInstalledPrinters =  objWMIService.ExecQuery _
    ("Select * from Win32_Printer Where Name = 'ScriptedPrinter'")

For Each objPrinter in colInstalledPrinters
    objPrinter.SetDefaultPrinter()
Next

sådan her assigner du en default printer.

Håber det kan hjælpe dig lidt videre...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester