Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Funktion um Netzlaufwerke zu verbinden

Frage Entwicklung VB for Applications

Mitglied: tomtetom

tomtetom (Level 1) - Jetzt verbinden

16.02.2006, aktualisiert 01.04.2006, 25653 Aufrufe, 13 Kommentare

Mein Ziel: einfach mehrere Netzlaufwerke mit einer Methode erstellen zu können

Hier was ich bisher habe....

' Zweck: mehrere Netzlaufwerk verbinden mit eigener Bezeichnung

' Konsolenbefehl zum trennen aller bisher gemappten Laufwerke starten
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("net use * /d /y")
Set WshShell = Nothing


' Variablen deklarieren
Dim objNetwork, objShell
Dim strMyName, strMyDriveLetter, strMyRemotePath


Public Function mapMyDrives(strMyName As String, strMyDriveLetter As String, strMyRemotePath As String) As Boolean

Set objNetwork = CreateObject("WScript.Network")
objNetwork.MapNetworkDrive strMyDriveLetter, strMyRemotePath
Set objShell = CreateObject("Shell.Application")
objShell.NameSpace(strMyDriveLetter).Self.Name = strMyName

mapMyDrives = True

End Function

' hier dann der Funktionsaufruf mit dem ich schön die Laufwerke verbinden kann
mapMyDrives("Mein Tauschlaufwerk", "T:", "\\server1\tausch")
mapMyDrives("Mein Backuplaufwerk", "B:", "\\server1\backup")


Set objNetwork = Nothing
Set objShell = Nothing



Leider kommt ständig ein Fehler das eine Klammer fehlen würde...
Ich bin kein VBler, aber denke schon nahe an der Lösung zu sein.
Ist der Lösungsansatz von hinten durch die Brust oder soweit okay?

Ziel: Ich möchte einfach ein sauberes Skript haben mit dem ich beim Rechnerstart erstmal alle bisherigen Laufwerke trenne und dann die neuen mit Bezeichnung anlege.

Wenn jemandem einfällt wie man zB noch prüfen kann ob Laufwerke bzw. Buchstaben bereits belegt sind zB D: für ein CD-Rom oder so, wäre ich dankbar für eine Abfrage wie man das prüft. Es gibt nichts schlimmeres als ein Mapping das fehlschlägt weil ein USB Stick oder CD-Rom oder Wechseldatenträger einen Laufwerksbuchstaben blockiert...

Danke für jeden Hinweis.
Mitglied: 8644
16.02.2006 um 14:52 Uhr
Hi,

muß es wirklich VB sein? Falls nicht, nutz doch einfach net use in einer Batch.
Das Forum ist voll mit Beisplielen dazu.

Psycho

Klug ist jeder - der eine vorher, der andere hinterher
Bitte warten ..
Mitglied: tomtetom
16.02.2006 um 15:19 Uhr
ja, vb weil ich die bezeichnung der netzlaufwerke selbst bestimmen will.


jetzt gehts!

hier der code.

' Zweck: mehrere Netzlaufwerk verbinden mit eigener Bezeichnung

' Konsolenbefehl zum trennen aller bisher gemappten Laufwerke starten
Set WshShell = WScript.CreateObject("WScript.Shell")
Return = WshShell.Run("net use * /d /y")
Set WshShell = Nothing

' Variablen deklarieren
Dim objNetwork, objShell
Dim strMyName, strMyDriveLetter, strMyRemotePath
Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Shell.Application")

Public Function mapMyDrives(strMyName, strMyDriveLetter, strMyRemotePath)

objNetwork.MapNetworkDrive strMyDriveLetter, strMyRemotePath
objShell.NameSpace(strMyDriveLetter).Self.Name = strMyName
mapMyDrives = ""

End Function

' hier dann der Funktionsaufruf mit dem ich schön die Laufwerke verbinden kann
mapMyDrives "Mein Tauschlaufwerk", "T:", "\\server1\tausch"
mapMyDrives "Mein Backuplaufwerk", "B:", "\\server1\backup"


Set objNetwork = Nothing
Set objShell = Nothing
Bitte warten ..
Mitglied: Baruse
31.03.2006 um 00:32 Uhr
Hallo tomtetom,

super !
genau sowas suche ich !
Jetzt fehlt für meine Zwecke noch der Benutzername und Kennwort:
bis jetzt arbeite ich mit "net use /USER:username pw"
und suche für Dein Super-Script die Möglichkeit, dieses auch fest zu hinterlegen und zwar möglichst pro Laufwerk.

PS: gibt's für das Script eine elegantere Lösung um vorh. Netzlaufwerke zu trennen, außer "WshShell.Run("net use * /d /y") " - das finde ich nicht ganz so schön, weil halt die Dos-Box kurz hochkommt.

Viele Grüße
Jörg
Bitte warten ..
Mitglied: Biber
31.03.2006 um 01:07 Uhr
Moin baruse,

Die entsprechende Methode heißt .RemoveNetworkDrive

Du findest auch hier im Forum dazu Beispiele.

Ein "net use * /d" , also Trennen aller Netzlaufwerke ist über eine For..Each..Schleife möglich, aber ich verstehe nicht, wo dieses pauschale Trennen nötig sein soll.

Ich komme bislang mit dem gezielten Trennen der Laufwerke aus, die ich auch verbunden habe (oder neu verbinden will).
Also
01.
Option Explicit 
02.
Dim objNetwork, strDriveMapped 
03.
strDriveMapped = "T:"  
04.
 
05.
Set objNetwork = CreateObject("WScript.Network")  
06.
objNetwork.RemoveNetworkDrive strDriveMapped, TRUE ' TRUE entspricht dem "/Y bei "net use t: /D /Y" 
07.
set objNetwork=null 
08.
'Wscript.Quit 
Gruß
Biber
P.S. Hier noch ein besseres Beispiel (das von gemini): http://www.administrator.de/User_Logon_Script_bei_Dom%E4nenanmeldung_(V ...
Bitte warten ..
Mitglied: Baruse
31.03.2006 um 01:16 Uhr
Hallo Biber,

vielen Dank für die prompte Antwort (zu solch nächtlicher Stunde)
wenn Du jetzt noch einen Tip hättest bez. des Usernamens... (jedem Mapping soll ein Username & Passwort mitgegeben werden)

Um es ganz genau zu machen:
ich suche eigentlich einen Ersatz für folgende Zeile:
if not exist s:\nul @354 use s: \\192.168.100.80\software /USER:username pw /persistent:yes
if not exist t:\nul @354 use t: \\192.168.100.80\driver /USER:username pw /persistent:yes

Also Abfrage ob das LW schon existiert ist und nur wenn nicht dann verbinden

von net use will ich weg weil.
1. keine Möglichkeit besteht, dem Laufwerk einen Namen zu geben
2. die Dos-Box einfach unschön ist

Viele Grüße
Jörg
Bitte warten ..
Mitglied: Biber
31.03.2006 um 01:29 Uhr
Na, baruse,
dafür reichen meine spärlichen VBS-Kenntnisse gerade noch (aber das hätte Dir auch jeder hergelaufene Google gebracht):


Syntax MapNetworkDrive:
MapNetworkDrive(strLocalName, strRemoteName, [bUpdateProfile],[strUser], [strPassword])

Also müsstest Du tomtetoms Schnipsel aufbohren zu
01.
... 
02.
Public Function mapMyDrives(strMyName, strMyDriveLetter, strMyRemotePath, strUsername, strPassword) 
03.
 
04.
objNetwork.MapNetworkDrive strMyDriveLetter, strMyRemotePath, FALSE, strUsername, strPassword  
05.
objShell.NameSpace(strMyDriveLetter).Self.Name = strMyName  
06.
mapMyDrives = "" 
07.
 
08.
End Function 
09.
 
10.
' hier dann der Funktionsaufruf mit dem ich schön die Laufwerke verbinden kann 
11.
mapMyDrives "Mein Tauschlaufwerk", "T:", "\\server1\tausch", "baruse", "ioT67f" 
12.
mapMyDrives "Mein Backuplaufwerk", "B:", "\\server1\backup" ,"baruse" , "ioT67f" 
13.
...
Gruß Biber
Bitte warten ..
Mitglied: Baruse
31.03.2006 um 10:10 Uhr
Hallo Biber,

mensch super !
Ich bin in Sachen VBA noch völlig blank - vielen Dank für die schnelle Hilfe !
Hat noch jemand 'ne Idee wie man abfragen kann, ob das Laufwerk bereits verbunden ist und nur dann die Schritte ausführt ?
M.W. kommt ja ne FM wenn man versucht ein LW zu verbinden welches bereits verbunden ist.
Das möchte ich halt abfangen.

Viele Grüße
Jörg
Bitte warten ..
Mitglied: Biber
31.03.2006 um 21:27 Uhr
Moin Jörg,
ich hatte weiter oben doch einen Link zu einer gemini-Lösung gepostet.
Und an geminis VBS-Schnipseln lässt sich genausowenig etwas optimieren wie an an einem Elton-John-Song.

In dem Schnipsel wird einfach die Liste aller gemappten Laufwerke durchlaufen und removed.
Entspricht doch Deinem "net * /d /y" (und im nächsten Atemzug wieder "net use .../persistant") *gg
01.
.... 
02.
Set colDrives = WshNetwork.EnumNetworkDrives 
03.
'.... 
04.
On Error Resume Next 
05.
If colDrives.Count > 0 Then 
06.
  For i = 0 To colDrives.Count - 1 Step 2 
07.
    WshNetwork.RemoveNetworkDrive colDrives(i), blnForce 
08.
  Next 
09.
End If 
10.
On Error GoTo 0 
11.
 
12.
'...usw
Und wenn Du bei Dir nur die Laufwerke "S:" und "T:" trennen willst und die sicherheitshalber neu mappen, dann prüfe doch innerhalb der "For i=0 To alleDrives"-Konstruktion, ob "uppercase(coldrives(i))="S" or "uppercase(coldrives(i))="T" ist.

Nur Mut..mit VBS kannst Du kaum was zerschroten...

Grüße
Biber
Bitte warten ..
Mitglied: Baruse
31.03.2006 um 21:59 Uhr
Hallo Biber,

ich glaub das ist alles nix für mich;
vor lauter Schnipsel werden jetzt nur noch Laufwerke getrennt, aber nicht mehr verbunden.
Problem ist auch daß ich überhaupt nicht verstehe was ich da zusammenschnipsle;
in einer Batchdatei kann ich wenigstens durch einfügen von "pause" sehen was er macht und warum was nicht funktioniert;
Kannst Du mir vielleicht den Code in einem Zug darstellen ?

Prüfen ob Netzlaufwerke vorhanden und wenn nicht dann (mehrere) verbinden, oder gleich alle trennen und neu verbinden...

Mit verzweifeltem Gruß
Jörg
Bitte warten ..
Mitglied: Biber
01.04.2006 um 01:16 Uhr
Na, Jörg,

nun mal keine Panik. Auch in VBS gibt es Msgbox'en und wscript.echo's, mit denen Du Deinen Source-Code verfolgen kannst.
Und Du hast gleich zwei funktionierende Vorlagen (die von tomtetom und die von gemini), die Du nur noch zusammenkopieren musst.
Fang an, poste das Zwischenergebnis und dann bringen wir die Kuh zum Fliegen.

Wenn es überhaupt sein muss.
Denn ein bisschen unsinnig ist der Aufwand schon IMHO.
Du willst IMMER (persistent) diese zwei Netzlaufwerke haben ->einmal persistent brauchst Du nie wieder Username/Passwort oder ein Net use.
Bis es in fünf Jahren mal irgendeiner trennt.
Und ebenso unnötig ist das tägliche "Laufwerksbezeichnungen zuweisen". Mach ich ja auch nicht täglich.
Einmalig in die Registry (suche mal im Forum nach "Mountpoints") und gut ists.

Und die Notwendigkeit von VBS statt Batch, weil...
"WshShell.Run("net use * /d /y") " - das finde ich nicht ganz so schön, weil halt die Dos-Box kurz hochkommt.
*kopfschüttel*
Dann ändere das in "WshShell.Run("net use * /d /y", 0, True) " -- dann geht kein CMD-Fenster auf.

Egal, poste das, was Du hast, dann schreddern wir das im Forum zusammen.

Grüße
Biber
Bitte warten ..
Mitglied: Baruse
01.04.2006 um 01:47 Uhr
Hallo Biber,

hab jetzt irgendwie was hingekriegt und es scheint auch zu funktionieren;
ob das nun sinnig ist, weiß ich nicht weil ich den Code so nicht verstehe;
hab ich mir halt zusammengeklaut...

Set WshNetwork = Wscript.CreateObject("Wscript.Network")
Set colDrives = WshNetwork.EnumNetworkDrives

On Error Resume Next
If colDrives.Count > 0 Then
For i = 0 To colDrives.Count - 1 Step 2
WshNetwork.RemoveNetworkDrive colDrives(i), blnForce
Next
End If
On Error GoTo 0

Dim objNetwork, objShell
Dim strMyName, strMyDriveLetter, strMyRemotePath
Set objNetwork = CreateObject("WScript.Network")
Set objShell = CreateObject("Shell.Application")

Public Function mapMyDrives(strMyName, strMyDriveLetter, strMyRemotePath, strUsername, strPassword)

objNetwork.MapNetworkDrive strMyDriveLetter, strMyRemotePath, FALSE, strUsername, strPassword
objShell.NameSpace(strMyDriveLetter).Self.Name = strMyName
mapMyDrives = ""

End Function

On Error Resume Next
mapMyDrives "Bilder", "B:", "\\192.168.100.80\photo", "Username", "pw"
mapMyDrives "Musik", "M:", "\\192.168.100.80\music", "Username", "pw"
mapMyDrives "Eigene Dateien", "N:", "\\192.168.100.80\own", "Username", "pw"
mapMyDrives "Software", "S:", "\\192.168.100.80\software", "Username", "pw"
'mapMyDrives "Web-Baruse", "T:", "\\192.168.100.80\web", "Username", "pw"
'mapMyDrives "Test-Baruse", "U:", "\\192.168.100.80\test1", "Username", "pw"

Set objNetwork = Nothing
Set objShell = Nothing
Bitte warten ..
Mitglied: Biber
01.04.2006 um 02:46 Uhr
Na, sieht doch sauberst aus, baruse,

ich glaube, dann können wir mal einen Moderator rufen, um den Thread zu schließen.
@tomtetom: Falls Du noch noch mitliest, könnstest Du bitte den Beitrag auf "Gelöst" setzen?

Schönes Wochenende allen
Biber
Bitte warten ..
Mitglied: Baruse
01.04.2006 um 11:35 Uhr
Hallo nochmal,

ich hatte es jetzt schon 2 mal, daß bei Neustart eines der Rechner das Laufwerk M zwar verbunden wurde, aber nicht mit dem Namen "Musik" sondern als "Netzlaufwerk".
An was kann das denn jetzt liegen ?

Wäre es nicht doch sinnvoller, erst abzufragen ob das Laufwerk bereits existiert und nur wenn nicht neu zu verbinden ?
Wie müßte so eine Abfrage aussehen ?

Gruß
Jörg
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(1)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Windows Server
gelöst Netzlaufwerke mit einer VPN Verbindung verbinden lassen (16)

Frage von M.Marz zum Thema Windows Server ...

Microsoft Office
gelöst Excel: Text in Zellbereich prüfen mit Vergleichstext ggf. mit Exact-Funktion (5)

Frage von Michi1 zum Thema Microsoft Office ...

JavaScript
AngularJS Variable über Input in Funktion ausführen

Frage von badkilla zum Thema JavaScript ...

Windows 10
Surface 4 Pro Netzlaufwerk verbinden (4)

Frage von Yannosch zum Thema Windows 10 ...

Heiß diskutierte Inhalte
LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Outlook & Mail
Outlook 2010 findet ost datei nicht (18)

Frage von Floh21 zum Thema Outlook & Mail ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...