Mit VBS Laufwerk automatisch bei Systemstart verbinden
01.07.2009
18:23:42 Uhr4059 Aufrufe
2 Antworten
18:23:42 Uhr
2 Antworten
Wenig hilfreich -1
Wie man automatisch einen Freigabepfad mounten kann in VBS
Hallo zusammen,
da ich öfters schon Anfragen im Netz gefunden hatte, wie man z.Bsp.: "net use..." in VBS nutzt, möchte ich gern mal einen Tipp schreiben, wie man so etwas programmieren könnte.
Mögliche Aufgabenstellung: Kleines Netzwerk mit einigen PCs, ein Server mit dem Freigabeordner, auf den die anderen PCs täglich zugreifen müssen. Der Freigabeordner hat seinen Freigabenamen - nennen wir ihn mal "Public" - für "Öffentlich".
Die Subnetmaske ist 255.255.255.0
Man kann diesen späteren Script in den Autostart-Ordner legen und somit wird dieser bei jedem neuen Booten aufgerufen.
Müßte aber nur einmal aufgerufen werden, da das mounten hier "persistent" erfolgt.
1) Öffne den Texteditor und füge folgenden Code ein:
2) dann diese Datei als *.vbs abspeichern. z.Bsp.: Mount.vbs.
Das ganze am besten unter "C:\" abspeichern. Warum? Komme ich direkt dazu!
Wenn die Ping-Abfrage aus VBS kommt, geht jedes Mal ein Fenster auf. Das kann nerven. Muß es aber nicht.
Mich stört es.
Also erstellen wir uns noch eine Batchdatei und öffnen nochmals den Texteditor und geben diesmal
folgenden Code ein:
Diese Datei nun abspeichern an einem Platz des Vertrauens und in *.bat bennen. Z.Bsp.: "Mount.bat"
Doppelklickt man auf diese, dann öffnet die Batchdatei die VBSDatei und ich bekomme ein Eingabefenster, welches
mir ständig anzeigt, was gerade ausgeführt wird. Ist etwas besser, als ständig auf- und zugehende Fenster.
Kann nervös machen
Soweit meiner erster Tipp hier im Forum! Bin für jegliche Kritik offen, da man ja erstens dazulernen möchte und zweitens, wenn
man besser wird im "Tippen" kann man anderen - Hilfesuchenden - besser helfen.
In diesem Sinne
Gruß
Tsuki
da ich öfters schon Anfragen im Netz gefunden hatte, wie man z.Bsp.: "net use..." in VBS nutzt, möchte ich gern mal einen Tipp schreiben, wie man so etwas programmieren könnte.
Mögliche Aufgabenstellung: Kleines Netzwerk mit einigen PCs, ein Server mit dem Freigabeordner, auf den die anderen PCs täglich zugreifen müssen. Der Freigabeordner hat seinen Freigabenamen - nennen wir ihn mal "Public" - für "Öffentlich".
Die Subnetmaske ist 255.255.255.0
Man kann diesen späteren Script in den Autostart-Ordner legen und somit wird dieser bei jedem neuen Booten aufgerufen.
Müßte aber nur einmal aufgerufen werden, da das mounten hier "persistent" erfolgt.
1) Öffne den Texteditor und füge folgenden Code ein:
01.
On Error Resume Next 02.
03.
PfadStr = inputbox("Bitte geben Sie den Namen von der Freigabe ein",,"Public") 04.
05.
set Winsock1=WScript.CreateObject("MSWinsock.Winsock", "WS_") 06.
Wscript.Echo "Eigene IP ist:" & Winsock1.localip 07.
08.
dim Zaehler 09.
Zaehler = 0 10.
AdrTemp = "" 11.
EigeneIP = Winsock1.localip 12.
13.
for i = 1 to len(winsock1.localip) 14.
a = mid(winsock1.localip,i,1) 15.
AdrTemp = AdrTemp & a 16.
if a = "." then 17.
select Case Zaehler 18.
case 0 19.
'Wscript.Echo Zaehler 20.
St1 = AdrTemp 21.
AdrTemp = "" 22.
Zaehler = Zaehler + 1 23.
case 1 24.
'Wscript.Echo Zaehler 25.
St2 = AdrTemp 26.
AdrTemp = "" 27.
Zaehler = Zaehler + 1 28.
case 2 29.
'Wscript.Echo Zaehler 30.
St3 = AdrTemp 31.
AdrTemp = "" 32.
Zaehler = Zaehler + 1 33.
end select 34.
end if 35.
36.
next 37.
38.
39.
Zaehler = 0 40.
41.
strTarget = St1 & St2 & St3 42.
43.
44.
Set objShell = CreateObject("WScript.Shell") 45.
46.
'Do Until InStr(strPingResults, "reply from") 47.
for i = 0 to 254 step 1 48.
49.
Zaehler = i 50.
AktIP = strTarget & Zaehler 51.
52.
53.
Set objExec = objShell.Exec("ping -n 1 -w 1000 " & AktIP) 54.
strPingResults = LCase(objExec.StdOut.ReadAll) 55.
56.
if InStr(strPingResults, "reply from") then 57.
Wscript.Echo AktIp & " antwortet." 58.
else 59.
Wscript.Echo AktIp & " antwortet nicht." 60.
end if 61.
62.
63.
if InStr(strPingResults, "reply from") then 64.
if eigeneIP = AktIP then 65.
Wscript.Echo AktIP & " ist eigene IP." 66.
else 67.
set shell = CreateObject("WScript.Shell") 68.
shell.run "net use Z: \\" & AktIp & "\" & PfadStr & " Passwort /user:USER /y",0 69.
Wscript.Sleep 5000 70.
71.
Set objFSO = CreateObject("Scripting.FileSystemObject") 72.
If objFSO.FolderExists("\\" & AktIp & "\" & PfadStr) Then 73.
Wscript.echo AktIP & " ist unter Z:\\" & AktIp & "\" & PfadStr & " gemountet." 74.
Wscript.Quit 75.
Else 76.
Wscript.Echo AktIP & " gesuchter Netzwerkpfad existiert aber nicht." 77.
End If 78.
79.
end if 80.
end if 81.
82.
if Zaehler = 254 then 83.
msgbox "Konnte den Netzwerkpfad nicht finden.Script wird beendet." 84.
WScript.Quit 85.
end if 86.
next 87.
'Loop 88.
89.
90.
set objshell = nothing 91.
set objExec = nothing 92.
set shell = nothingDas ganze am besten unter "C:\" abspeichern. Warum? Komme ich direkt dazu!
Wenn die Ping-Abfrage aus VBS kommt, geht jedes Mal ein Fenster auf. Das kann nerven. Muß es aber nicht.
Mich stört es.
Also erstellen wir uns noch eine Batchdatei und öffnen nochmals den Texteditor und geben diesmal
folgenden Code ein:
01.
@Echo Off 02.
cscript C:\Mount.vbs 03.
pauseDoppelklickt man auf diese, dann öffnet die Batchdatei die VBSDatei und ich bekomme ein Eingabefenster, welches
mir ständig anzeigt, was gerade ausgeführt wird. Ist etwas besser, als ständig auf- und zugehende Fenster.
Kann nervös machen
Soweit meiner erster Tipp hier im Forum! Bin für jegliche Kritik offen, da man ja erstens dazulernen möchte und zweitens, wenn
man besser wird im "Tippen" kann man anderen - Hilfesuchenden - besser helfen.
In diesem Sinne
Gruß
Tsuki
TimoBeil schreibt am 01.07.2009 um 22:20:07 Uhr
Servus,
eigentlich bin ich ja absoluter "hasser" von Kommentaren in Anleitungen und Tipps
- aber weil du so nett drum bittest 
und damit wären wir schon beim Thema - dein Script läuft nur auf englischen Systemen
also u.A auch

Gruß
eigentlich bin ich ja absoluter "hasser" von Kommentaren in Anleitungen und Tipps
Bin für jegliche Kritik offen,
schreib lieber:Bin für jegliche konstruktive Kritik offen...
und damit wären wir schon beim Thema - dein Script läuft nur auf englischen Systemen
also u.A auch
56. if InStr(strPingResults, "TTL") then
obwohl -ganz ehrlich - nur weil ein System anpingbar ist - bedeutet das noch lange nicht, dass auch der Serverdienst / der Share da ist. Vielleicht das script so verändern Gruß
TsukiSan schreibt am 02.07.2009 um 03:43:17 Uhr
Hallo Timo,
danke für deine konstruktive Kritik!
Ja, es ist richtig, habe dies auf englischer Version von XP Prof SP2 geschrieben.
Mir ist bei meiner Variante aufgefallen, daß es auch den Freigabepfad nicht findet, wenn dieser sich auf einer FAT32 Partition befindet. Das mounten, selbst bei Eingabe von net use in der Kommandozeile führt zu nix.
Da muß ich wohl mal noch mich etwas belesen.
Hab besten Dank!
Gruß
Tsuki
danke für deine konstruktive Kritik!
Ja, es ist richtig, habe dies auf englischer Version von XP Prof SP2 geschrieben.
Mir ist bei meiner Variante aufgefallen, daß es auch den Freigabepfad nicht findet, wenn dieser sich auf einer FAT32 Partition befindet. Das mounten, selbst bei Eingabe von net use in der Kommandozeile führt zu nix.
Da muß ich wohl mal noch mich etwas belesen.
Hab besten Dank!
Gruß
Tsuki













