VisualBasic Netzlaufwerke Verbinden

freak1051

Ensign
Registriert
Dez. 2012
Beiträge
197
Hallo

Ich habe mal wieder mir ein kleines Projekt als Ziel gesetzt, bei dem ich jetzt hänge.

Ich habe einen NAS Server, auf den ich Ordner habe. 2 Dieser Ordner sind Öffentlich. Public als Austauschplattform und Scans, in dem die Scandaten vom Netzwerkdrucker/Scanner landen.

Bisher habe ich eine Batch geschrieben, die erstmal alle Verbindungen kappt, und danach die Verbindungen wieder herstellt.

In meinem Heimnetzwerk sind 4 Benutzer, also auch 4 persönliche, Passwortgesicherte Ordner.
Nun habe ich für jeden Benutzer eine eigene Batch angefertigt, in der ich über Net Use die 2 Öffentlichen Ordner und der Private(inkl. Anmeldung) route.
________________________________________________________________

Soweit so gut. Warum ich das Ganze umbauen will.

1. Ich will dieses lästige schwarze Fenster bei der Anmeldung weg haben
2. Speziell bei W-lan Geräten dauert die Netzwerk-Einwahl ab und an länger, als das aufrufen der Batch aus dem Autostart. Also wird nichts verbunden. Habe deshalb schon eine Aufgabe in der Aufgabenplanung erstellt, was auch geklappt hat, aber nach wie vor hab ich dieses nervige schwarze Fenster. Ich möchte es auch nicht minimiert öffnen, ich möchte es nicht haben :)

Nun habe ich angefangen einen Code zu schreiben. (Am ende des Posts). Dabei sind mir natürlich immer noch tollere Sachen eingefallen :) Allerdings habe ich, bevor ich zu diesen "Luxus-Problemen" komme noch den ein oder anderen Bug im Code, und finde nicht heraus, woran es liegt. Habe zwar noch nie VB Scripts gecodet, aber denke bin doch nicht ganz unbegabt :)



Wenn ich das Script ausführen möchte, erscheint ein Fenster: Zeile 79 Zeichen 2 , Diese Netzwerkverbindung ist nicht vorhanden. Klar sind sie nicht vorhanden, habe sie ja mal zum Test davor getrennt. Sollte also ne mglt haben, damit er, wenn keine Verbindungen da sind, diesen punkt überspringt. ( Z79 ist folgende : objNetwork.RemoveNetworkDrive strDriveLetterPrivate)

( absichtlicher Fehler: zwischen : und objNetwork ist ein Leerzeichen, ansonsten wird es zum Smile
_______________________________________________________________

Nun die "Luxusprobleme"

1. Ich muss jedem Benutzer seine eigene Batch schreiben. Ich würde aber gerne ein Script schreiben, bei dem im im script über setzten einer Variable auswählen kann, für welchen Benutzer dieses Script jetzt ist ( If-then oder Case...) Habe des versucht, vllt etwas unschön, mit der Variable strWitchUser und den 4 Cases unten zu realisieren aber....

2. Wenn ich des schon so komfortabel löse, wäre natürlich bei ERSTMALIGEM Start es wunderschön, wenn ein Fenster erscheint, bei dem ich den Benutzer auswählen kann (wäre für den gebrauch in andere, evtl. auch größeren Netzwerken interessant)

3. Momentan kann ja jeder, der das Script zur Bearbeitung öffnet, die Passwörter einsehen. (ist ja alles im Familiären Bereich, aber so generell wäre ich schon daran interessiert, wie man des "verschlüsseln" kann oder "unsichtbar" machen kann im Code. Vorstellbar wäre, dass bei Erstmaliger Anmeldung, eben ein PopUp öffnet, bei dem man den jeweiligen Nutzer auswählt, dort dann auch das Netz-Passwort des Ordners eingeben muss, und aber alles Gespeichert wird, OHNE, dass man die Passwörter einsieht.

4. Für die W-Lan Geräte dachte ich, könnte man evtl eine If-Schleife einfügen. Also als Beispiel: Ping das NAS an, und erst wenn du n Positiver Ping hast, dann springe weiter zur Anmeldung/Routing der Netzlaufwerke.


Hier der Code

Code:
'Programmbeginn
Option Explicit

' Declaration of variables
Dim objNetwork
Dim strDriveLetterPrivate
Dim strDriveLetterPublic
Dim strDriveLetterScans


Dim strNetworkShareUSER1
Dim strNetworkShareUSER2
Dim strNetworkShareUSER3
Dim strNetworkShareUSER4
Dim strNetworkSharePublic
Dim strNetworkShareScans

Dim strUsernameUSER1
Dim strUsernameUSER2
Dim strUsernameUSER3
Dim strUsernameUSER4

Dim strPasswordUSER1
Dim strPasswordUSER2
Dim strPasswordUSER3
Dim strPasswordUSER4

Dim strWitchUser


' Set parameters 

'Choose a User:
'USER1 = 1
'USER2 = 2
'USER3 =3
'USER3 = 4

	strWitchUser = 1



'Drive Letters

	strDriveLetterPrivate = "O:"
	strDriveLetterPublic = "P:"
	strDriveLetterScans = "Q:"

'Folder Routing

	strNetworkSharePublic = "\\Test-NAS\Public"
	strNetworkShareScans = "\\Test-NAS\Scans"

	strNetworkShareUSER1 = "\\Test-NAS\USER1"
	strNetworkShareUSER2 = "\\Test-NAS\USER2"
	strNetworkShareUSER3 = "\\Test-NAS\USER3"
	strNetworkShareUSER4 = "\\Test-NAS\USER4"

'Usernames

	strUsernameUSER1 = "USER1"
	strUsernameUSER2 = "USER2"
	strUsernameUSER3 = "USER3"
	strUsernameUSER4 = "USER4"

'Passwords
	strPasswordUSER1 = "PW1"
	strPasswordUSER2 = "PW2"
	strPasswordUSER3 = "PW3"
	strPasswordUSER4 = "PW4"

' Create network object
Set objNetwork = CreateObject("WScript.Network")



'Disconnecting Drives

	objNetwork.RemoveNetworkDrive strDriveLetterPrivate
	objNetwork.RemoveNetworkDrive strDriveLetterPublic
	objNetwork.RemoveNetworkDrive strDriveLetterScans
	

'Connecting PublicDrives



		' Connect network drive Public with specified parameters
		objNetwork.MapNetworkDrive strDriveLetterPublic, strNetworkSharePublic, False

		' Connect network drive Scans with specified parameters
		objNetwork.MapNetworkDrive strDriveLetterScans, strNetworkShareScans, False


		
'Connecting Personal Drives

Select Case strWitchUser

	Case 1
		
		'Connect to USER1
		objNetwork.MapNetworkDrive strDriveLetterPrivate, strNetworkShareUSER1, False, strUsernameUSER1, strPasswordUSER1
		
	Case 2
	
		'Connect to USER2
		objNetwork.MapNetworkDrive strDriveLetterPrivate, strNetworkShareUSER2, False, strUsernameUSER2, strPasswordUSER2
		
	Case 3
	
		'Connect to USER3
		objNetwork.MapNetworkDrive strDriveLetterPrivate, strNetworkShareUSER3, False, strUsernameUSER3, strPasswordUSER3
		
	Case 4
		
		'Connect to USER4
		objNetwork.MapNetworkDrive strDriveLetterPrivate, strNetworkShareUSER4, False, strUsernameUSER4, strPasswordUSER4
		
	End Select
		
		
' Deallocate network object
Set objNetwork = Nothing

' Quit Visual Basic Script
WScript.Quit

Warum die Farben im Bereich Case so komisch angezeigt werden.. KP, hab ich da n Fehler drin?

Und wäre echt super, wenn ihr mir ned irgendwelche Codefetzen an den Kopf werft, sondern mir ein wenig erklärt warum, wohin und wiso und überhaupt :)

Danke schon mal im Vorraus

grüße
Daniel
 
meine ehrliche Meinung? Realisier das lieber alles über einen Scriptaufruf mit Powershell.
 
Wenn du mir sagst wie des geht und was das ist :)
 
Powershell ist die Weiterentwicklung von DOS... naja das zu sagen ist Blasphemie. Eher gesagt ist Powerhell eine seit Windows Vista verfügbare Programmiersprache und Kommandozeileninterpreter. Dort kannst du mit meist wenigen Befehlen alles tun, was man in Windows steuern möchte. Man kann aber auch wirkliche Programme schreiben, wie z.B. die von dir gewünschte Abfragen von Usernamen etc.
Viele Funktionen die in Windows nicht über eine grafische Oberfläche zu steuern sind, sind ausschließlich über Powershell programmier-/ konfigurierbar.

Schau dich mal auf Youtube um für Tutorials oder bei Microsoft MVA
https://mva.microsoft.com/en-us/tra...ell-3-0-jump-start-8276?l=r54IrOWy_2304984382

Aktuell ist Powershell in Version 5.0 verfügbar. Wie so oft bei Microsoft ist es leider ein wachsendes Projekt und daher nur sehr bedingt abwärtskompatibel.
Ich würde dir empfehlen direkt auf der Version 5.0 zu entwickeln. Diese hat wohl auch eine kontextbasierte Hilfe (während der Befehlseingabe wie du es in Visual Studio gewohnt sein dürftest) statt des bislang für Einsteiger unpraktischen get-help commandlets.

Powershell ISE ist die grafische Entwicklungsoberfläche.

PS Download:
https://www.microsoft.com/en-us/download/details.aspx?id=50395
 
Zuletzt bearbeitet:
Zurück
Oben