Gå til innhold

Hvordan installere skriver via vbscript?


Anbefalte innlegg

Hei! Jeg skulle hatt et script som installerer skrivere fra en print-server utfra datamaskin gruppenavn. Jeg har prøvd meg fram på egen hånd, men fikk det ikke helt til.

 

Her er scriptet som det ser ut nå. Jeg mistenker funksjonen "IsComputerMember" ikke blir definert noe sted. Men jeg aner ikke hvordan eller hva jeg skal gjøre for å fikse dette. Noen idé?

 

Set objNetwork = WScript.CreateObject("WScript.Network")
' Navn på domene
strDomain = "Ringve"

' Hent datamaskinnavn
strComputerName = objNetwork.ComputerName

' Last inn referanse til vår datamaskin
Set objComputer = GetObject("WinNT://" & strDomain & "/" & strComputerName & ",computer")

'Legger til Printer
strPrinter = ""

Select Case CBool(-1)
Case isComputerMember("Gymkontor")
    strPrinter = "\\Ringve-fil\Dell_Laser_Gymkontor"
Case isComputerMember("Lærerbakrom")
    strPrinter = "\\Ringve-fil\Fargelaser_lærerbakrom"
Case isComputerMember("Bibliotek")
    strPrinter = "\\Ringve-fil\Dell_Laser_Bibliotek"
Case isComputerMember("FO03")
    strPrinter = "\\Ringve-fil\Dell_Fargelaser_FO03"
Case isComputerMember("AA05")
    strPrinter = "\\Ringve-fil\HPLaser_AA05"
Case isComputerMember("AA07")
    strPrinter = "\\Ringve-fil\HPLaser_AA07"
Case isComputerMember("AA08")
    strPrinter = "\\Ringve-fil\HPLaser_AA08"
Case isComputerMember("Østmarka IT")
    strPrinter = "\\Ringve-fil\Lexmark_Østmarka_IT-rom"
Case isComputerMember("Østmarka lærerrom")
    strPrinter = "\\Ringve-fil\Kopimaskin_PHST-Lærerrom"
Case isComputerMember("Arbeidsrom 3 og 4")
    strPrinter = "\\Ringve-fil\Kopimaskin_arbeidsrom_3og4"
Case Else
    MsgBox "No Printer"
End Select
'objNetwork.AddWindowsPrinterConnection strPrinter
MsgBox strPrinter

Endret av raziel014
Lenke til kommentar
Videoannonse
Annonse

hvor er objNetwork laget?

 

Jeg anbefaler og bruke Select Case isteden for alle If'setningene...

 

main

Function IsComputerMember(sGroup)
  Dim oGroup
  on error resume next
  Set oGroup = GetObject("WinNT://" & strDomain & "/" & sGroup & ",group")
  IsComputerMember = CBool(oGroup.IsMember(objComputer.ADsPath & "$"))
End Function


sub Main()
Set objNetwork = WScript.CreateObject("WScript.Network")
' Navn på domene
strDomain = "Ringve"

' Hent datamaskinnavn
strComputerName = objNetwork.ComputerName

' Last inn referanse til vår datamaskin
Set objComputer = GetObject("WinNT://" & strDomain & "/" & strComputerName & ",computer")

'Legger til skriver
strSkriver = ""

select case true
case isComputerMember("Gymkontor"): strSkriver = "\\Ringve-fil\Dell_Laser_Gymkontor"
case isComputerMember("Lærerbakrom"): strSkriver = "\\Ringve-fil\Fargelaser_lærerbakrom"
case isComputerMember("Bibliotek"): strSkriver = "\\Ringve-fil\Dell_Laser_Bibliotek"
case isComputerMember("FO03"): strSkriver = "\\Ringve-fil\Dell_Fargelaser_FO03"
case isComputerMember("AA05"): strSkriver = "\\Ringve-fil\HPLaser_AA05"
case isComputerMember("AA07"): strSkriver = "\\Ringve-fil\HPLaser_AA07"
case isComputerMember("AA08"): strSkriver = "\\Ringve-fil\HPLaser_AA08"
case isComputerMember("Østmarka IT"): strSkriver = "\\Ringve-fil\Lexmark_Østmarka_IT-rom"
case isComputerMember("Østmarka lærerrom"): strSkriver = "\\Ringve-fil\Kopimaskin_PHST-Lærerrom"
case isComputerMember("Arbeidsrom 3 og 4"): strSkriver = "\\Ringve-fil\Kopimaskin_arbeidsrom_3og4"
End select

objNetwork.AddWindowsPrinterConnection strSkriver
End Sub

 

Na har jeg ikke testet dette, men jeg tror det vil virke..

Lenke til kommentar

Hmm, virker ikke helt. Får en feil om at skrivenavnet er ugyldig. Litt rart fordi det er nest siste linje som får feil. Altså AddWindowsPrinterConnection.

Edit: Dette betyr sikkert at funksjonen ikke finner skriveren som blir definert i strSkriver?

 

 

Men hvordan fungerer dette nå da? Er det slik at scriptet sjekker om maskinen ligger i en gruppe også lagrer det som "strSkriver" for å så hente det opp i nest nederste linje? Er det ikke mulig å legge til "objNetwork.AddWindowsPrinterConnection" under hver case? Eller er ikke det nødvendig?

 

Edit2: Dersom jeg setter til en msgbox til strSkriver så kommer det opp en boks der det står ingenting. Så det virker som om strSkriver stringen ikke får noen verdi og at listen med skrivere ikke blir knytte til strSkriver.

 

Dersom jeg selv skriver noe mellom gåseøynene på "strSkriver = "jalla" så kommer "jalla" fram i messageboksen.

Endret av raziel014
Lenke til kommentar

Nå har jeg oppdatert øverste post. Fikk beskjed fra en type på et vbscript forum at jeg ikke kan kalle på subrutiner. Derfor måtte jeg ta bort enkelte ting.

 

Når jeg nå prøver å kjøre scriptet som det vises nå på toppen får jeg melding om akkurat det du sier Richard. isComputerMember blir ikke definert noe sted.. Hvordan kan jeg gjøre det da?

 

Edit: La til denne og da får jeg ihvertfall ikke feilmelding. Men i tekstboksen står det fortsatt ingenting.

 

Function IsComputerMember(sGroup)

Dim oGroup

on error resume next

Set oGroup = GetObject("WinNT://" & strDomain & "/" & sGroup & ",group")

IsComputerMember = CBool(oGroup.IsMember(objComputer.ADsPath & "$"))

Endret av raziel014
Lenke til kommentar

Da ville jeg angrepet problemet en annen vei...

 

her er ett annet forslag, men keg far "Unspecified Error pa linjen hvor jeg henter in objComputer...

 

Set objNetwork = WScript.CreateObject("WScript.Network")
' Navn på domene
strDomain = "Ringve"
strComputer = objNetwork.ComputerName

strData= split("Gymkontor,Lærerbakrom,bibliotek,FO03,AA05,AA07,AA08,Østmarka IT,Østmarka lærerrom,Arbeidsrom 3 og 4", ",")
strSkrv = split("\\Ringve-fil\Dell_Laser_Gymkontor,\\Ringve-fil\Fargelaser_lærerbakrom,\\Ringve-fil\Dell_Laser_Bibliotek," & _
"\\Ringve-fil\Dell_Fargelaser_FO03,\\Ringve-fil\HPLaser_AA05,\\Ringve-fil\HPLaser_AA07,\\Ringve-fil\HPLaser_AA08," & _
"\\Ringve-fil\Lexmark_Østmarka_IT-rom,\\Ringve-fil\Kopimaskin_PHST-Lærerrom,\\Ringve-fil\Kopimaskin_arbeidsrom_3og4", ",")

' Last inn referanse til vår datamaskin
strQuery = "WinNT://" & strDomain & "/" & strComputer & ",computer"
objComputer = GetObject(strQuery)

ADsPath = objComputer.ADsPath & "$"

strSkriver = ""

For X = 0 to ubound(strData)
Set oGroup = GetObject("WinNT://" & strDomain & "/" & strData(X) & ",group")
if oGroup.IsMember(ADsPath) then
 strSkriver = strSkrv(X)
 exit for
end if
next

'Legger til skriver
objNetwork.AddWindowsPrinterConnection strSkriver

Endret av Richard87
Lenke til kommentar
  • 2 uker senere...

Hei igjen! Har nå fått hjelp fra et annet forum og har nå dette scriptet.

Scriptet fungerer i grunn og mapper opp skriver basert på gruppenavn, bare at det kommer bare en skriver. Altså dersom jeg REMer ut den skriveren som kommer, så kommer den neste skriveren. Jeg vil gjerne at det skal gå an å ha opptil 10 skrivere samtidig. Tror det har noe med å få det til å gå i loop eller noe sånt.

 

Function IsComputerMember(sGroup)
   Dim oGroup
   on error resume next
   Set oGroup = GetObject("WinNT://" & strDomain & "/" & sGroup & ",group")
   IsComputerMember = CBool(oGroup.IsMember(objComputer.ADsPath & "$"))
End Function

Set objNetwork = WScript.CreateObject("WScript.Network")
' Navn på domene
strDomain = "Ringve"

' Hent datamaskinnavn
strComputerName = objNetwork.ComputerName

' Last inn referanse til vår datamaskin
Set objComputer = GetObject("WinNT://" & strDomain & "/" & strComputerName & ",computer")

'Legger til Printer
strPrinter = ""

Select Case CBool(-1)
Case isComputerMember("Gymkontor")
    strPrinter = "\\Ringve-fil\Dell_Laser_Gymkontor"
Case isComputerMember("Lærerbakrom")
    strPrinter = "\\Ringve-fil\Fargelaser_lærerbakrom"
Case isComputerMember("Bibliotek")
    strPrinter = "\\Ringve-fil\Dell_Laser_Bibliotek"
Case isComputerMember("FO03")
    strPrinter = "\\Ringve-fil\Dell_Fargelaser_FO03"
Case isComputerMember("AA05")
    strPrinter = "\\Ringve-fil\HPLaser_AA05"
Case isComputerMember("AA07")
    strPrinter = "\\Ringve-fil\HPLaser_AA07"
Case isComputerMember("AA08")
    strPrinter = "\\Ringve-fil\HPLaser_AA08"
Case isComputerMember("Østmarka IT")
    strPrinter = "\\Ringve-fil\Lexmark_Østmarka_IT-rom"
Case isComputerMember("Østmarka lærerrom")
    strPrinter = "\\Ringve-fil\Kopimaskin_PHST-Lærerrom"
Case isComputerMember("Arbeidsrom 3 og 4")
    strPrinter = "\\Ringve-fil\Kopimaskin_arbeidsrom_3og4"
Case Else
    MsgBox "No Printer"
End Select

if strPrinter<>"" then
   objNetwork.AddWindowsPrinterConnection strPrinter
   msgbox "Printer connected to " & strPrinter
else
   msgbox "Your computer is not member of any target group and not printer is not established."
end if

'End Function
'MsgBox strPrinter

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...