Beetje kromme titel, maar het zal aan de hand van het voorbeeld wel duidelijk worden. Ik gebruik VB-scripting voor verschillende taken in ons netwerk. Nu ben ik druk bezig om printers van de ene server naar de andere over te hangen. Op zich gaat dat perfect met mijn script, maar gezien het aantal printers zou het script nogal lang worden.
Voorbeeld:
Nu heb ik alleen iets meer dan 4 printers in het netwerk waar op gechecked moet worden dus je kan begrijpen dat het script qua lengte alleen maar langer en langer wordt terwijl dit veel korter zou moeten kunnen. Alleen daar gaat het mis.
Aangezien Printeroud en Printernieuw gelijktijdig oplopen dacht ik dat ik daar het wel automatisch zou kunnen laten tellen door een waarde + de teller samen gelijk te maken aan de CONST zodat de waarde daar automatisch zou komen. Helaas gaat dat niet op, want hij plaatst daar dan alleen de waarde.
Ik dacht dat te doen m.b.v. "Printeroud" &intNetLetter maar dat werkt dus niet aangezien je dan al met een waarde bezig bent.
Het probleem is vooral dat ik niet weet waarop ik precies moet zoeken. Iemand die mij op de weg kan helpen als de vraag iig duidelijk is voor jullie.
Voorbeeld:
VBScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
| ' Opgeven variabelen Option Explicit DIM objNetwork, objPrinter, intDrive, intNetLetter SET objNetwork = CreateObject("WScript.Network") SET objPrinter = objNetwork.EnumPrinterConnections ' Definieren Constante ' LET OP: Alle printers moeten met kleine letters geschreven worden. CONST printeroud1 = "\\server01\printer01" CONST printeroud2 = "\\server01\printer02" CONST printeroud3 = "\\server01\printer03" CONST printeroud4 = "\\server01\printer04" CONST printernieuw1 = "\\server02\printer01" CONST printernieuw2 = "\\server02\printer02" CONST printernieuw3 = "\\server02\printer03" CONST printernieuw4 = "\\server02\printer04" ' Controleren of de oude printers nog aanwezig zijn. Zo ja verwijderen ' en nieuwe toevoegen For intDrive = 0 to objPrinter.Count -1 Step 2 intNetLetter = IntNetLetter +1 IF Lcase(objPrinter.Item(intDrive +1)) = Printeroud1 THEN objNetwork.RemovePrinterConnection Printeroud1 objNetwork.AddWindowsPrinterConnection Printernieuw1 ElseIF Lcase(objPrinter.Item(intDrive +1)) = Printeroud2 THEN objNetwork.RemovePrinterConnection Printeroud2 objNetwork.AddWindowsPrinterConnection Printernieuw1 ElseIF Lcase(objPrinter.Item(intDrive +1)) = Printeroud3 THEN objNetwork.RemovePrinterConnection Printeroud3 objNetwork.AddWindowsPrinterConnection Printernieuw3 ElseIF Lcase(objPrinter.Item(intDrive +1)) = Printeroud4 THEN objNetwork.RemovePrinterConnection Printeroud4 objNetwork.AddWindowsPrinterConnection Printernieuw4 Next Wscript.Quit |
Nu heb ik alleen iets meer dan 4 printers in het netwerk waar op gechecked moet worden dus je kan begrijpen dat het script qua lengte alleen maar langer en langer wordt terwijl dit veel korter zou moeten kunnen. Alleen daar gaat het mis.
Aangezien Printeroud en Printernieuw gelijktijdig oplopen dacht ik dat ik daar het wel automatisch zou kunnen laten tellen door een waarde + de teller samen gelijk te maken aan de CONST zodat de waarde daar automatisch zou komen. Helaas gaat dat niet op, want hij plaatst daar dan alleen de waarde.
Ik dacht dat te doen m.b.v. "Printeroud" &intNetLetter maar dat werkt dus niet aangezien je dan al met een waarde bezig bent.
Het probleem is vooral dat ik niet weet waarop ik precies moet zoeken. Iemand die mij op de weg kan helpen als de vraag iig duidelijk is voor jullie.