h4zz4rd
Goto Top

VB Netzlaufwerk verbinden und User begrüßen

Hallo ihr Lieben,
ich habe folgendes Problem.
Ich habe die Aufgabe bekommen, ein Anmeldescript unter VB zu erstellen, in dem der jeweils angemeldete User begrüßt wird und gleichzeitig ein Netzlaufwerk verbunden wird. Das Script soll auf einem XP Client ausgeführt werden. Das Netzlaufwerk befindet sich aúf einem virtuellen Windows 2003 Server. Da ich leider absolut keine Ahnung von VB habe, und Google auch nichts wirklich passendes für mein Problem bietet, hoffe ich auf eure Hilfe face-smile

Danke und liebe Grüße,
h4zZ4rd

Content-ID: 64857

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

Ausgedruckt am: 26.11.2024 um 07:11 Uhr

Sylvio
Sylvio 27.07.2007 um 14:51:02 Uhr
Goto Top
Hi,

Versuchs mal damit
On Error Resume Next

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\.\root\cimv2")  
Set colItems = objWMIService.ExecQuery("Select * from Win32_ComputerSystem")  
For Each objComputer in colItems
    UN = objComputer.UserName 
Next
    Msgbox "Hello " & UN ,  vbOKOnly, "Welcome"  

Set objshell = Wscript.CreateObject("WScript.Shell")  
Set objFSO = CreateObject("Scripting.FileSystemObject")  
objshell.Run("net use k: /d"),0 'delete exsisting map  
objshell.Run("net use k: \\servername\share"),0  
wobei k: hier den Laufwerksbuchstaben darstellt.


Gruß,
Sylvio
bastla
bastla 27.07.2007 um 15:57:55 Uhr
Goto Top
Hallo h4zz4rd und willkommen im Forum!

Als Alternative zu Sylvio's Vorschlag könntest Du es auch ohne die Verwendung der CMD-Shell probieren:
On Error Resume Next
Set WshNetwork = CreateObject("WScript.Network")  
MsgBox "Hello " & WshNetwork.UserName & " !", vbOKOnly, "Welcome"  
WshNetwork.RemoveNetworkDrive "K:"  
WshNetwork.MapNetworkDrive "K:", "\\servername\share"  
Das "On Error Resume Next"-Statement brauchst Du vor allem für den Fall, dass K: noch nicht mit einem Netzlaufwerk verbunden ist (und daher auch nicht getrennt werden kann).

Falls Du das sauberer lösen wolltest, könntest Du die verbundenen Laufwerke abfragen:
Set oDrives = WshNetwork.EnumNetworkDrives
For i = 0 to oDrives.Count - 1 Step 2
	If oDrives.Item(i) = "K:" Then WshNetwork.RemoveNetworkDrive "K:"  
Next

Grüße
bastla
problemsolver
problemsolver 27.07.2007 um 17:21:44 Uhr
Goto Top
Hi bastla!!!

was man so nebenbei so alles Schönes sieht hier... ;)
Danke sehr für deinen Beitrag! *als-kleines-licht-den-kopf-senk* *fg*

Bei uns ist es teilweise nämlich so, dass die Anmeldeskripte recht lange dauern. (.bat Scripte)
Es wurde immer so gemacht, dass mit net use * /delete /yes alle Laufwerke getrennt worden sind und dann wieder verbunden worden sind.

So wie Du es hier löst, ist es wahrscheinlich eine ganze Ecke schneller!!! (oooder?)

Interessehalber: Kennst Du noch eine Möglichkeit per Batch-Datei herauszufinden, ob ein Laufwerk K: (zum Beispiel) mit einer Ressource (nehmen wir mal "set verbindmich=\\server\meineressource$") noch verbunden ist? (Durch eine Abfrage per REG oder irgendetwas anderem?)
Auf Grundlage dieser könnte man die Anmeldeskripte schon genug optimieren ohne immer wieder alles erneut zu verbinden...

Schon mal danke im Voraus!

Lieben Gruß

Markus
bastla
bastla 27.07.2007 um 19:31:25 Uhr
Goto Top
Hallo problemsolver!

Freut mich, wenn Du Interessantes gefunden hast ... face-smile

So wie Du es hier löst, ist es wahrscheinlich eine ganze Ecke schneller!!! (oooder?)
Das Script oben ist eigentlich eine Entsprechung zu Eurer Vorgangsweise (trennen / neu verbinden), also sollte es in der Form nicht wirklich schneller sein. Du könntest das Ganze allerdings tatsächlich umkehren und die Abfrage dazu benutzen, nur dann zu verbinden, wenn eben keine Laufwerksverbindung (zur richtigen Freigabe) besteht.
Eine Abfrage zu diesem Zweck in Batch könnte (für mehrere Netzlaufwerke) etwa so aussehen:
@echo off & setlocal
for %%i in ("K:\\Server\Share4K" "L:\\Server\Share4L" "X:\\Server\Share4X") do for /f "tokens=1* delims=:" %%d in ('echo %%~i') do call :Connect %%d: "%%e"  
goto :eof
:Connect
set conn=
for /f "tokens=3" %%i in ('net use^|findstr /i "%1"') do set "conn=%%i"  
if /i "%conn%"==%2 goto :eof  
if defined conn net use %1 /d>nul
net use %1 %2>nul
goto :eof
Wenn bereits richtig verbunden, lässt der Batch die Verbindung bestehen, wenn verbunden, allerdings nicht mit der richtigen Freigabe, wird getrennt und neu verbunden und wenn noch nicht verbunden wird natürlich gleichfalls "net use ..." ausgeführt.

Aber ob das etwas bringt ...

Grüße
bastla
h4zz4rd
h4zz4rd 30.07.2007 um 09:07:43 Uhr
Goto Top
Hallo und danke für die Antwort(en) face-smile
Werd das heute morgen gleich mal ausprobieren und schauen, ob ich das auf die Reihe bekomme :P Melde mich dann später nochmal, um Bericht zu erstatten...

Liebe Grüße,
h4zZ4rd
h4zz4rd
h4zz4rd 30.07.2007 um 09:27:05 Uhr
Goto Top
Huhu,
da bin ich schon wieder.
Vielen vielen Dank, das klappt ja wunderbar ;)

Nur noch eine kurze Frage zum Schluss:

Set WshNetwork = CreateObject("WScript.Network") --> Was bedeutet diese Zeile ganz genau? Die restlichen weiß ich, bzw konnte man sich denken, nur die Definition dieser nicht so ganz...

Wäre super, falls mir jmd diese Frage noch beantworten könnte.

Liebe Grüße,
h4zZ4rd

P.S. Achso, kann man irgendwie Kommentare einfügen? Habe die VBS mit dem Editor erstellt.
Ciaociao
bastla
bastla 06.08.2007 um 16:18:51 Uhr
Goto Top
Hallo h4zz4rd!

Mit urlaubsbedingter Verspätung zum WshNetwork-Objekt den entsprechenden Hilfe-Text:

Bietet Zugriff auf die freigegebenen Ressourcen des Netzwerkes, mit dem der Computer verbunden ist.

Erstellen Sie ein WshNetwork-Objekt, wenn eine Verbindung mit Netzwerkfreigaben und Netzwerkdruckern hergestellt oder getrennt werden soll, wenn Netzwerkfreigaben zugeordnet oder entfernt werden sollen oder auf Informationen zu einem Benutzer des Netzwerkes zugegriffen werden soll.

Eigenschaften
ComputerName-Eigenschaft | UserDomain-Eigenschaft | UserName-Eigenschaft

Methoden
AddWindowsPrinterConnection-Methode | AddPrinterConnection-Methode | EnumNetworkDrives-Methode | EnumPrinterConnections-Methode | MapNetworkDrive-Methode | RemoveNetworkDrive-Methode | RemovePrinterConnection-Methode | SetDefaultPrinter-Methode

Kommentare können nach einem Apostroph eingefügt werden, also etwa
WshNetwork.RemoveNetworkDrive "K:" 'Netzlaufwerk K: trennen  

Grüße
bastla