zacky87
Goto Top

VBS - Netzlaufwerk nach Eingabe verbinden

Über VBScript Formular unter diversen Bedingungen zu einem Netzlaufwerk verbinden

Aktualisiert: Status --> Fertig

Hallo Zusammen,
ich habe im Forum + Internet nach meinem Problem gesucht, doch leider keine geeignete Lösung gefunden.
Ich hoffe ich komme durch diesen Betrag zu einer Lösung meines Problems. Vorweg muss ich noch zugeben, dass ich vorher nie wirklich mit VBS etwas gemacht habe, dennoch mit anderen Programmiersprachen zu tun habe.

Also es geht um folgendes:
Anbei habe ich eine Grafik beigelegt, die den Ablauf noch mal grafisch darstellen soll.

Ich benötige ein Script(per VBS), welches nach einer Netzwerkpfad-Eingabe eine Verbindung zum Pfad herstellt. Dieser Pfad soll dann in eine Datei geschrieben werden. Am einfachsten wahrscheinlich eine .txt (config.txt).
Weiterhin soll die Möglichkeit bestehen weitere Verbindungen herzustellen, die ebenso in die .txt geschrieben werden.

Bevor zu dem Netzwerkpfad aber eine Verbindung hergestellt werden kann, muss kontrolliert werden, ob dieser existiert und ob der Benutzer die entsprechende Freigabe zum Pfad hat. Erst nach Bestätigung dieser beiden Bedingungen wird die Verbindung eingerichtet. Ansonsten soll eine MsgBox kommen.

Wenn keine Verbindungen mehr einzurichten sind, soll man das Script schließen.

Sobald das Script immer gestartet wird, wird überprüft ob es eine vorher angelegte config.txt schon gibt. Wenn ja, dann schließt das Script und nichts passiert. Wenn keine Config.txt da ist, passiert das was oben beschrieben ist. Das bedeutet, man müsste erst die config.txt löschen um über das Script neue Verbindungen einzurichten.

Zusammenfassung:
Überprüfen ob config.txt vorhanden
Formulareingabe des Netzwerkpfades
Netzwerkpfad prüfen auf Existenz und Freigabe
Netzwerkpfad einrichten
Datei "config.txt" anlegen

So Habe es Jetzt hersausgefunden:


'Variablendeklaration
dim filesys, objFSO, eingabe, LogicalDrive, eingerichtet, araray (26,26)

Set filesys = CreateObject("Scripting.FileSystemObject")
'Überprüfung ob eine Log datei vorliegt.
If filesys.FileExists("C:\log.txt") = True Then
'Logdatei vorhanden
Set oDict = CreateObject("Scripting.Dictionary")
Set oFile = filesys.OpenTextFile("C:\log.txt")
Set wn = WScript.CreateObject("WScript.Network")
'Direktes Einlesen, Dictionary Objekt darf nämlich beliebig wachsen

i=0
'Aufruf einer Schleife, welche jedes Laufwerk mappt was in der Logdatei angegeben ist
while not oFile.AtEndOfStream
oDict.add i,oFile.ReadLine
j = 0
'Jede Zeile der Logdatei --> oDict.Item(i)
'String wird geteilt durch die 3 Rauten (###) --> Split
InputData = Split(oDict.Item(i), "###")
'Einzelnen Teile des Strings --> Array
For each strData In InputData
araray(i,j) = strData
j = j + 1
next
'Fehler abfangen, falls das Script gestartet wird, obwohl die Log datei
If filesys.DriveExists (araray(i,0)) = TRUE Then
wn.RemoveNetworkDrive araray(i,0)
wn.MapNetworkDrive araray(i,0), araray(i,1), False
ELSE
' Mappen der Laufwerke durch die Einträge des Arrays
wn.MapNetworkDrive araray(i,0), araray(i,1), False
END IF
i=i+1
Wend
oFile.Close
WScript.Quit
'END


ELSE
'Keine Logdatei vorhanden


' Aufruf einer Logdatei namens log.txt
Set logtxt = filesys.CreateTextFile("c:\log.txt", True)
'Schleife damit man mehr Laufwerke mappen kann also nur eines
For h = 0 To 25
'Variable --> eingerichtet zur Kontrolle bis ein Laufwerk gemappt wurde
eingerichtet = 0
eingabe= InputBox ("Geben Sie Ihren Netzwerkpfad ein, zu dem Sie eine Verbindung hergetsellt werden soll! Ansonsten Schließen")
IF eingabe=FALSE THEN
'Falls keine Eingabe geschehen ist, wird das Script geschlossen
WScript.Quit
ELSE

' Laufwerksbuchstaben A: - Z:
For I = 0 To 25
'Zuweisung des Laufwerksbuchstaben
LogicalDrive = Chr(65 + I) & ":"


Set filesys = CreateObject("Scripting.FileSystemObject")
'Kontrolle ob es den ermittelten Laufwerksbuchstaben schon gibt
If filesys.DriveExists (LogicalDrive) = False Then
MsgBox ("Der Laufwerksbuchstabe " & LogicalDrive & " ist noch frei und wird nun gemappt")

Set wn = WScript.CreateObject("WScript.Network")

'On Error Resume Next

'Mapp befehl
wn.MapNetworkDrive LogicalDrive, eingabe, False
'MsgBox ("Für diesen Netzpfad müssen Sie den Benutzernamen und Passwort angeben")
'benutz= InputBox ("Geben Sie bitte das Benutzer ein")
'pw= InputBox ("Geben Sie bitte das Passwort ein")
'On Error Goto error

' Mappbefeehl mit Benutzernamen und Passwort
'wn.MapNetworkDrive "t:", "\\192.168.2.5\geheim", False, "Guest", "geheim"

'error:
'Msgbox Err.Description

eingerichtet = 1
logtxt.WriteLine(LogicalDrive & "###" & eingabe)

END IF

If eingerichtet = 1 Then Exit For END IF
Next

END IF
NEXT
logtxt.Close
END IF
WScript.Quit

Der Beitrag kann somit duch einen Admin geschlossen werden.

Grüße

Content-Key: 95916

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

Printed on: April 25, 2024 at 08:04 o'clock