tuxhunt3r
Goto Top

VBScript - Alle Netzlaufwerke auf einmal löschen

Hallo ans Forum

Ich muss per VBScript alle Netzlaufwerke auf einmal löschen, und zwar sollen die Laufwerke auch dann gelöscht werden, wenn noch Dateien offen sind.
Wie macht man das?

Oder anders gefragt: Wie macht man einen "net use * /d /y" in VBScript?

Content-ID: 75584

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

Ausgedruckt am: 08.11.2024 um 21:11 Uhr

58502
58502 09.12.2007 um 22:33:44 Uhr
Goto Top
So:
set shell = CreateObject("WScript.Shell")  
shell.run "net use * /d /y",0  
TuXHunt3R
TuXHunt3R 10.12.2007 um 08:57:08 Uhr
Goto Top
Herzlichen Dank, werds testen.
Was bedeutet das ",0" am Schluss der zweiten Zeile (sorry, bin absoluter VBScript-Anfänger, bin Batch-Fan face-smile)
Biber
Biber 10.12.2007 um 09:29:47 Uhr
Goto Top
Moin TuX,

IMHO mehr Möglichkeiten hast Du, wenn Du die RemoteNetworkDrive-Methode des WshNetwork-Objects aufrufst.

Beispiel hier im Forum oder auf M$ Developer Network.

Beispiel/Zitat von der angegebenen Site:
Dim WshNetwork
Set WshNetwork = WScript.CreateObject("WScript.Network")  
WshNetwork. RemoveNetworkDrive"E:"  

Vorteil/Begründung:
Die DOKUMENTIERTE Syntax...
object.RemoveNetworkDrive(strName, [bForce], [bUpdateProfile])
beinhaltet den bForce-Parameter, also das Trennen, auch wenn noch Files/Prozesse auf diesem Share offen sind.

Der "Net use /d"-Befehl akzeptiert zwar den undokumentierten Schalter /y oder /yes.
Ob er mehr macht, also tatsächlich ein FORCE wenigstens versucht, das solltest Du vorher einmal testen.
IMHO hat "NET USE" keinen verlässlichen Trenn-Trotzdem-Parameter.

Zu der Rückfrage mit dem Parameter 0 (falls 7stein nicht schon geantwortet hat): Ohne neues Fenster/Silent/im Hintergrund.

Grüße
Biber
TuXHunt3R
TuXHunt3R 10.12.2007 um 12:33:00 Uhr
Goto Top
Ob er mehr macht, also tatsächlich ein FORCE wenigstens versucht, das solltest Du vorher einmal testen.

Hab ich getestet. Ich hatte unter Vista das Problem, dass das Loginscript nicht richtig durchgelaufen ist. Bei meinem Pface-big-smilerive hat er immer nach einer Eingabe verlangt, ob denn nun das Laufwerk wirklich getrennt werden solle, da noch Dateien geöffnet seien. Ich habe dann
net use * /d
durch
net use * /d /y
ersetzt, was prima geklappt hat.

Den Vorteil von net use * /d /y sehe ich darin, dass wirklich nur die existierenden Netzlaufwerke getrennt werden. Wenn ich nun eine Schleife basteln würde, die object.RemoveNetworkdrive auf allen Buchstaben von F: bis z: durchführen würde, müsste ich jedesmal noch überprüfen, ob eine Verbindung mit diesem Laufwerksbuchstaben existiert. Dies ist a. mühsamer zu coden und b. langsamer. Darum wollte ich bei net use * /d /y bleiben.
Aber trotzdem danke. Wenn das von Siebenstein funktioniert, werde ich das nehmen.
TuXHunt3R
TuXHunt3R 10.12.2007 um 20:14:29 Uhr
Goto Top
Die Lösung von Siebenstein hat prima geklappt, herzlichen Dank.

Beitrag hiermit gelöst.