Kenny Bones Skrevet 16. mars 2006 Del Skrevet 16. mars 2006 (endret) 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 20. mars 2006 av raziel014 Lenke til kommentar
Richard87 Skrevet 16. mars 2006 Del Skrevet 16. mars 2006 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
Kenny Bones Skrevet 17. mars 2006 Forfatter Del Skrevet 17. mars 2006 (endret) 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 17. mars 2006 av raziel014 Lenke til kommentar
Richard87 Skrevet 17. mars 2006 Del Skrevet 17. mars 2006 Kan det hende at isComputerMember aldri returnerer true? har du testet denne funksjonen skikkelig? Lenke til kommentar
Kenny Bones Skrevet 20. mars 2006 Forfatter Del Skrevet 20. mars 2006 (endret) 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 20. mars 2006 av raziel014 Lenke til kommentar
Richard87 Skrevet 22. mars 2006 Del Skrevet 22. mars 2006 (endret) 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 22. mars 2006 av Richard87 Lenke til kommentar
Kenny Bones Skrevet 31. mars 2006 Forfatter Del Skrevet 31. mars 2006 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
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå