Beim Login Script alle Netzwerklaufwerke trennen
Hallo Gemeinde,
ich habe ein Problem mit unserem Logi Script.
Beim Login sollen alle Netzlaufwerke getrennt werden.
Dies wird auch gemacht. Aber wenn man schon angemeldet ist und das Login Script noch einmal ausführt erscheint folgende Fehlermeldung:
Fehler: Falscher Parameter
Code 80070057
Quelle: WSHNetwork.RemoveNetworkDrive
Es handelt sich um folgenden Abschnitt:
'Disconnect ALL mapped drives
Set clDrives = objNetwork.EnumNetworkDrives
For i = 0 to clDrives.Count -1 Step 2
objNetwork.RemoveNetworkDrive clDrives.Item(i), True, True
Next
Es betrifft die Zeile:
objNetwork.RemoveNetworkDrive clDrives.Item(i), True, True
Habe ich dort einen Denkfehler.
Dieser Fehler erscheint immer dann, wenn sich ein User über Remote auf einen PC einwählt.
Also, wie schaffe ich es, dass erst alle vorhandenen Netzlaufwerke getrennt werden. Nach der erfolgreichen Trennung werden die Laufwerke wieder gemappt.
Vielen Dank im voraus!
ich habe ein Problem mit unserem Logi Script.
Beim Login sollen alle Netzlaufwerke getrennt werden.
Dies wird auch gemacht. Aber wenn man schon angemeldet ist und das Login Script noch einmal ausführt erscheint folgende Fehlermeldung:
Fehler: Falscher Parameter
Code 80070057
Quelle: WSHNetwork.RemoveNetworkDrive
Es handelt sich um folgenden Abschnitt:
'Disconnect ALL mapped drives
Set clDrives = objNetwork.EnumNetworkDrives
For i = 0 to clDrives.Count -1 Step 2
objNetwork.RemoveNetworkDrive clDrives.Item(i), True, True
Next
Es betrifft die Zeile:
objNetwork.RemoveNetworkDrive clDrives.Item(i), True, True
Habe ich dort einen Denkfehler.
Dieser Fehler erscheint immer dann, wenn sich ein User über Remote auf einen PC einwählt.
Also, wie schaffe ich es, dass erst alle vorhandenen Netzlaufwerke getrennt werden. Nach der erfolgreichen Trennung werden die Laufwerke wieder gemappt.
Vielen Dank im voraus!
Please also mark the comments that contributed to the solution of the article
Content-Key: 163101
Url: https://administrator.de/contentid/163101
Printed on: April 19, 2024 at 18:04 o'clock
16 Comments
Latest comment
Moin Ferengie,
ehrlich gesagt, versteht ich schon gar nicht den Ablauf.
Ein Benutzer meldet sich an.
Loginscript läuft ohne Fehler.
Ein Benutzer meldet sich über Remote.
Loginscript meldet "falscher Paramter"
Dein Script geht davon aus, dass in jedem Laufwerke vorhanden sind, die zu trennen sind. Ist das so?
Lass Dir doch mal anzeigen, was das Script eigentlich trennen möchte.
Grüße
Markus
ehrlich gesagt, versteht ich schon gar nicht den Ablauf.
Aber wenn man schon angemeldet ist und das Login Script noch einmal ausführt erscheint folgende Fehlermeldung
Wie kann ein Loginscript ein zweites Mal laufen, wenn ich schon angemeldet bin?Ein Benutzer meldet sich an.
Loginscript läuft ohne Fehler.
Ein Benutzer meldet sich über Remote.
Loginscript meldet "falscher Paramter"
Dein Script geht davon aus, dass in jedem Laufwerke vorhanden sind, die zu trennen sind. Ist das so?
Lass Dir doch mal anzeigen, was das Script eigentlich trennen möchte.
For i = 0 to clDrives.Count -1 Step 2
WScript.Echo "Trenne " & clDrives.Item(i)
objNetwork.RemoveNetworkDrive clDrives.Item(i), True, True
Next
Grüße
Markus
Moin Ferengie,
Ich denke aber, dass der Grund ist. Weil nichts zum trennen da ist, gibt es auch keine Parameter.
Damit Du nicht erst in diesen Fehler läufst, baue doch eine Abfrage ein. In etwa so (Syntax ist mir unbekannt)
Markus
Nur zu meiner Entschuldigung - Ich bin nicht der VBS Profi.
ich auch nicht und hoffe, dass das Echo richtig ist.Ich denke aber, dass der Grund ist. Weil nichts zum trennen da ist, gibt es auch keine Parameter.
Damit Du nicht erst in diesen Fehler läufst, baue doch eine Abfrage ein. In etwa so (Syntax ist mir unbekannt)
if clDrives.Count > 0 then
For i = 0 to clDrives.Count -1 Step 2
objNetwork.RemoveNetworkDrive clDrives.Item(i), True, True
Next
endif oder end if
Markus
Hallo noch einmal,
(falls es nicht VB sein muss).
vG
LS
@echo off
set strDriveLetter=G:
set strRemotePath=\\rmsg-1.rmsg.intern\privat
::Disconnect ALL mapped drives
net use * /delete
net use R: \\rmsg-1.rmsg.intern\rmsg
net use O: \\rmsg-1.rmsg.intern\progs
::Home Directory Setzen
net use %strDriveLetter% %strRemotePath%\%USERNAME%
(falls es nicht VB sein muss).
vG
LS
@BigWim
Die zusätzliche Abfrage ist nicht nötig - wenn clDrives.Count 0 ergibt, müsste die Schleife von 0 bis -1 laufen; da sie das bei einer Schrittweite von +2 nicht kann, wird sie einfach übersprungen ...
Dein Vorschlag von oben wäre übrigens so etwas informativer:
Grüße
bastla
Die zusätzliche Abfrage ist nicht nötig - wenn clDrives.Count 0 ergibt, müsste die Schleife von 0 bis -1 laufen; da sie das bei einer Schrittweite von +2 nicht kann, wird sie einfach übersprungen ...
Dein Vorschlag von oben wäre übrigens so etwas informativer:
Set objNetwork = WScript.CreateObject("WScript.Network")
Set clDrives = objNetwork.EnumNetworkDrives
For i = 0 to clDrives.Count -1 Step 2
WScript.Echo clDrives.Item(i), clDrives.Item(i+1)
Next
bastla
@bastla
Moin Bastla,
Ich befolge immer noch den Rat meines Klassenlehrers: Markus! Scharf nachdenken und dann das andere nehmen.
Meine Vermutung ging dahin, dass das Konstrukt vielleicht doch nicht richtig aufgebaut ist und mit der Abfrage wollte ich auf Nr. sichergehen, weil ich nämlich nicht weiß, was
Grüße
Markus
Moin Bastla,
Dein Vorschlag von oben wäre übrigens so etwas informativer
Wenn ich doch soweit schon wäre ....wenn clDrives.Count 0 ergibt, müsste die Schleife von 0 bis -1 laufen
Genau: MüßteIch befolge immer noch den Rat meines Klassenlehrers: Markus! Scharf nachdenken und dann das andere nehmen.
Meine Vermutung ging dahin, dass das Konstrukt vielleicht doch nicht richtig aufgebaut ist und mit der Abfrage wollte ich auf Nr. sichergehen, weil ich nämlich nicht weiß, was
objNetwork.EnumNetworkDrives
zurückliefert.Grüße
Markus
Hallo BigWim!
funktionieren würde ...
Grüße
bastla
weil ich nämlich nicht weiß, was
Wie Du dem "objNetwork.EnumNetworkDrives
zurückliefert.Enum
" entnehmen kannst, erhältst Du eine "Enumeration" (Aufzählung) - kannst Du so ähnlich wie ein eindimensionales Array verwenden, sodass also auchSet objNetwork = WScript.CreateObject("WScript.Network")
Set clDrives = objNetwork.EnumNetworkDrives
For i = 0 to clDrives.Count -1 Step 2
WScript.Echo clDrives(i), clDrives(i+1)
Next
Grüße
bastla