docusnap-dude
Goto Top

VBscripting mit Jump zu anderen Scripten and goBack Funktion

Unter DOs gab es den "Call"-Befehl.....

Hallo miteinander,

da hab ich heute folgende Frage zu VB-Scripting:

ich hab da ein Loginscript für Domainmembers. Das ist derzeit ellenlang und soll verkürzt werden.

Ziel ist es, für jede Abteilung ein eigenes Script für Drucker & Laufwerkmapping zu starten allerdings aus einem gemeinsamen Startscript heraus.

Facts:

ich gebe also verschiedene Standards vor im startscript "login.vbs" (Auszug)
strServer = DC01
strFileserver = DC02

if isMember("Buchhaltung") then strDepartment = "Buchhaltung"   
end if
if isMember("Einkauf") then strDepartment = "Einkauf"   
end if
Jetzt hab ich nun das Ziel aus diesem Startscript heraus ein Script je nach Abteilung zu starten...
call "\\" & strServer & "\Netlogon\Departmentscripts\" & strDepartment & ".vbs" ' *"call" ist denk ich falsch; nur wie heisst das jetzt  
...welches dann im Scriptablauf z.B. laufwerke mounted, Drucker zuweist etc. ABER: am Ende des Abteilungs-spezifischen Scripts soll das Startscript (login.vbs) weiterlaufen und zwar genau nach der Stelle des Jumps zum Abteilungsscripts.

Wie macht man das?

Danke für Ideen & machbare Vorschläge! Ach ja: bitte nicht mit anderen prgrammiersprachen kommen da mir diese durch den Mutterkonzern vorgegeben ist (also kein DOS, Java etc.)...

Danke!

Content-Key: 152492

Url: https://administrator.de/contentid/152492

Printed on: April 24, 2024 at 01:04 o'clock

Mitglied: 76109
76109 Oct 06, 2010 at 16:47:43 (UTC)
Goto Top
Hallo frankoehli!

Etwa in der Art:
CreateObject("WScript.Shell").Run "..\Test.vbs", 0, True  
Wobei der Parameter am Ende True/False bestimmt, ob das Skript warten soll oder nicht (True=Warten und False=Weiter)

Gruß Dieter
Member: DocuSnap-Dude
DocuSnap-Dude Oct 06, 2010 at 17:58:24 (UTC)
Goto Top
Danke Dieter!

Noch eine Frage: muss ich in den Sub-Scripts auch wieder die str's, dim's etc. mitgeben oder "merkt" das script das die aus dem Startscript schon im RAM sind?


Gruß Frank
Mitglied: 76109
76109 Oct 06, 2010 at 18:14:04 (UTC)
Goto Top
Hallo Frank!

Anhand Deines Call-Beispiels, dann in etwa so
strCmdLine = """\\" & strServer & "\Netlogon\Departmentscripts\" & strDepartment & ".vbs"""  'Leerzeichen erlaubt  

CreateObject("WScript.Shell").Run strCmdLine, 0, True  

Willst Du auch Parameter an das Skript übergeben? Wenn ja Beispiel posten.

Gruß Dieter
Member: DocuSnap-Dude
DocuSnap-Dude Oct 06, 2010 at 18:38:17 (UTC)
Goto Top
Hi Dieter,

so in etwa sieht es schon aus; hier das Beispiel (aszug):
Dim strSERVER , strSERVER01, strSERVER02, strSERVER03
Dim strNetLogpath, strNetLogSubPath
Dim strDepartment01, strDepartment02
.
.
strDOMAIN   = "MyDomain" 	' DOMAIN NAME  
strSERVER   = "DC01" 	' SERVER NAME related to Drive Mapp  
strSERVER01 = "DC02" 	' SERVER NAME EXAMPLE: servername.domain.point  
strSERVER02 = "DC03"     ' SERVER NAME related for SoftwareDeploymentServce & DHCP  
strSERVER03 = "APP05"    ' SERVER NAME related for Devicemanegement  
strNetLogPath = strSERVER & "\Netlogon"  
strNetLogSubPath = strSERVER & strNetLogPath & "\SubScripts"  
Die Dim's und Str's sollen mit rüber in das "Abteilungsbezogene" Script. Mein call ist wie folgt:
'** Buchhaltung **  
	if IsMember("Buchhaltung") then strDepartment01 = "Buchhaltung"  
			CreateObject("WScript.Shell").Run strNetLogSubPath & strDepartment01 & ".vbs", 0, True  
		end if
das Abteilungsbezogene Script dann lediglich:
objNetwork.MapNetworkDrive ("V", strSERVER & "\Department\" & strDepartment01, "Departmentdrive" )   
'dann mach noch dies  
'und mach noch das  
'und tu noch jenes  
'...und nun gehe einfach zurück zum Script von welchem aus du gestartet wurdest  
'und mache bitte genau dort weiter wo du hier rüber gesprungen bist  
Der jump am Ende soll also zurück zum Startscript. Weisst du wie ich es meine?

Danke im voraus; ist schon mal eine wesentlich übersichtlichere Sache. Ziel der Sache ist das wenn ein Script defekt ist das Startscript weiter tuckert und somit nicht die ganze Firma still steht.

Danke also noch mal!
Mitglied: 76109
76109 Oct 07, 2010 at 17:10:22 (UTC)
Goto Top
Hallo Frank!

Hiermal ein praktisches Beispiel. Die Start.vbs ruft die Call.vbs mit Argumenten auf, wartet bis dessen Ausführung beendet ist und wertet den Exit-Code aus.

Start.vbs
    Dim strPath, strVar1, strVar2, strCmdLine, intReturn, objShell

    strPath = "E:\Test\Mit Leerzeichen\Call.vbs"  
    strVar1 = "Parameter1OhneLeerzeichen"  
    strVar2 = "Parameter2OhneLeerzeichen"  

    strCmdLine = """" & strPath & """" & " " & strVar1 & " " & strVar2  '= "Path" Var1 Var2  
    
    Set objShell = CreateObject("WScript.Shell")  
    
    intReturn = objShell.Run(strCmdLine, 0, True)  'Call Call.vbs (Warten auf Exit)  
    
    If intReturn = 0 Then
        MsgBox "Die Call.Vbs hat den Wert 0 (OK) zurückgegeben."  
    Else
        MsgBox "Die Call.Vbs hat den Wert 1 (Fehler) zurückgegeben."  
    End If
Call.vbs
    Dim strVar1, strVar2
    
    With WScript
        If .Arguments.Count <> 2 Then
           MsgBox "Falsche Anzahl an Argumenten!"  
          .Quit 1  'Fehler ReturnValue = 1  
         Else
            strVar1 = .Arguments(0)
            strVar2 = .Arguments(1)
            MsgBox strVar1
            MsgBox strVar2
           .Quit 0  'OK ReturnValue = 0  
        End If
    End With

Gruß Dieter

[edit] geändert: in Call.vbs waren die Codezeilen 5 und verttauscht [/edit]
Member: DocuSnap-Dude
DocuSnap-Dude Oct 07, 2010 at 18:37:10 (UTC)
Goto Top
Super; das teste ich morgen direkt mal durch! Schönen Abend Dieter!